git fetch origin master:master 是什么意思? 我指的是 master:master 部分:我知道 git fetch origin 的含义,但 master:master 又是什么呢?
remote(origin)后面的参数是refspecs。 使用master:master将覆盖您的master分支;请参见此答案。 有关git fetch带或不带refspec参数的行为,详见此答案。
git pull
运行了两个命令。第一个是git fetch
,它的作用很像git fetch origin branch:origin/branch
,使用“很像”这个词只是为了处理不常见的特殊情况。git pull
运行的第二个命令由您决定:您可以让它运行git merge
或git rebase
。这两个命令与git fetch
的操作可能非常不同,因为git merge
和git rebase
都可以创建新的提交。Fetch则不能:fetch只能从其他Git获取现有的提交。 - torekgit merge
和git rebase
本身都有几个特殊情况,它们不需要创建新的提交记录,因此也不会麻烦。当发生这种情况时,你所询问的git fetch
可以完成相同的工作。这是因为不需要新的提交记录。Fetch不能创建新的提交记录,但如果任务足够简单,fetch可以做到。就像让你的狗去找鞋子一样:如果它们在应该在的地方,那就可以了。如果需要去鞋店买新的鞋子,那就太过分了。 :-) - torekgit fetch
的--all
标志表示所有远程。git fetch origin master:master
中的master:master
参数是一个refspec,必须提供 refspecs 来覆盖--all
对每个远程使用的默认值。 - torekgit fetch origin master:master
的等效操作而不需要两次给出分支名称?我经常使用get fetch origin branch:branch
;我很少使用git fetch origin branch:different_name
。 - Keith Thompson