`git fetch origin master:master` 是什么意思?

15

git fetch origin master:master 是什么意思?

我指的是 master:master 部分:我知道 git fetch origin 的含义,但 master:master 又是什么呢?

1个回答

19

remoteorigin)后面的参数是refspecs

使用master:master将覆盖您的master分支;请参见此答案

有关git fetch带或不带refspec参数的行为,详见此答案


1
@C.Binair:不,这两者可能非常不同,因为git pull运行了两个命令。第一个是git fetch,它的作用很像git fetch origin branch:origin/branch,使用“很像”这个词只是为了处理不常见的特殊情况。git pull运行的第二个命令由您决定:您可以让它运行git mergegit rebase。这两个命令与git fetch的操作可能非常不同,因为git mergegit rebase都可以创建新的提交。Fetch则不能:fetch只能从其他Git获取现有的提交。 - torek
1
@C.Binair:这里的棘手之处在于,git mergegit rebase本身都有几个特殊情况,它们不需要创建新的提交记录,因此也不会麻烦。当发生这种情况时,你所询问的git fetch可以完成相同的工作。这是因为不需要新的提交记录。Fetch不能创建新的提交记录,但如果任务足够简单,fetch可以做到。就像让你的狗去找鞋子一样:如果它们在应该在的地方,那就可以了。如果需要去鞋店买新的鞋子,那就太过分了。 :-) - torek
@alper:不是的。git fetch--all 标志表示所有远程git fetch origin master:master 中的 master:master 参数是一个refspec,必须提供 refspecs 来覆盖 --all 对每个远程使用的默认值。 - torek
一个快速的问题(如果它不是那么快,我会发布一个新的问题)。有没有一种方法可以做到类似于 git fetch origin master:master 的等效操作而不需要两次给出分支名称?我经常使用 get fetch origin branch:branch;我很少使用 git fetch origin branch:different_name - Keith Thompson
1
@KeithThompson:除了使用别名或脚本之外,没有其他方法。显然,使用脚本(或shell别名)很容易实现。Git别名很奇怪而且凌乱,所以我会使用调用shell函数的Git别名。 - torek
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接