origin
,它有一个被本地的master
跟踪的分支master
。是否有选项或参数可以提供给git-pull
,以达到切换到master
,拉取,然后切换回我开始的任何分支的相同效果?
这里的许多答案表明这是不可能的,但是文档中关于<refspec>下的<dst>的讨论表明类似以下内容:
git pull origin master:master
做到这一点应该不难。是这样吗?
origin
,它有一个被本地的master
跟踪的分支master
。是否有选项或参数可以提供给git-pull
,以达到切换到master
,拉取,然后切换回我开始的任何分支的相同效果?
这里的许多答案表明这是不可能的,但是文档中关于<refspec>下的<dst>的讨论表明类似以下内容:
git pull origin master:master
做到这一点应该不难。是这样吗?
git pull
基本上是执行 git fetch
然后执行 git merge
。
由于不能在另一个分支上执行 git merge
,所以无法为另一个分支执行 git pull
。 为了能够执行 git merge
,您需要首先检出目标分支。 出于同样的原因,您也不能为另一个分支执行 git pull
。
@torek 提供了一个非常好的观点:
详见:Merging Branches Without Checkout。而且,针对 git pull origin x:y 的问题:git pull 将 x:y 参数传递给 git fetch,因此 git fetch 执行它要做的事情;但然后 git pull 尝试合并到当前分支,而不管 x 和/或 y。
git pull origin x:y
这个命令:git pull
会将参数x:y
传递给git fetch
,因此git fetch
会按照它的方法去执行;但是git pull
则会尝试将其合并到当前分支,而不考虑x
和/或y
。 - torek我从未见过 master:master 的语法。通常使用 git pull origin,例如:master。
我认为你想要做的是先进行一次 fetch。然后你就可以合并任何跟踪分支,或者切换到它们。
fetch
:我特别想知道是否可以以这种方式使用 pull
。) - orome拉取(pull)基本上是在当前(跟踪)分支上进行获取(fetch)操作,然后进行更新检出(checkout)。你所需要的只是获取操作。
git fetch origin master:master
pull
,但现在我看到我的问题了:我试图在不切换分支的情况下更新工作树文件。这没有意义,对吧? - oromegit pull
的合并功能吗?
如果不需要,你可以简单地执行以下操作:
git fetch
git branch -f master origin/master
这只是使本地主分支指向与远程主分支相同的提交。
mySourceBranch
是什么?是master
、master:master
、remotes/origin/master
还是其他什么。我希望的效果与在切换到master
后拉取的效果相同(通常会设置跟踪)。 - orome