我可以将代码拉到我当前所在分支以外的另一个分支吗?

3
我需要能够拉取一个我可能不在的分支(实际上,为了论证的目的,假设我不知道我在哪个分支上)。例如,我有一个远程的origin,它有一个被本地的master跟踪的分支master。是否有选项或参数可以提供给git-pull,以达到切换到master,拉取,然后切换回我开始的任何分支的相同效果? 这里的许多答案表明这是不可能的,但是文档中关于<refspec>下的<dst>的讨论表明类似以下内容:
git pull origin master:master 
做到这一点应该不难。是这样吗?

这是我使用的命令... "git pull origin mySourceBranch" - BENARD Patrick
@Jahnux73:在我的情况下,mySourceBranch是什么?是mastermaster:masterremotes/origin/master还是其他什么。我希望的效果与在切换到master后拉取的效果相同(通常会设置跟踪)。 - orome
当我在分支“feature”上时,当我执行“git pull origin develop”命令时,它会在我的当前分支“feature”上拉取“develop分支”的内容。(所以对于你来说应该是主分支) - BENARD Patrick
4个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5
git pull 基本上是执行 git fetch 然后执行 git merge。 由于不能在另一个分支上执行 git merge,所以无法为另一个分支执行 git pull。 为了能够执行 git merge,您需要首先检出目标分支。 出于同样的原因,您也不能为另一个分支执行 git pull@torek 提供了一个非常好的观点:

而且,针对 git pull origin x:y 的问题:git pull 将 x:y 参数传递给 git fetch,因此 git fetch 执行它要做的事情;但然后 git pull 尝试合并到当前分支,而不管 x 和/或 y。

详见:Merging Branches Without Checkout

2
为了特别处理git pull origin x:y这个命令:git pull会将参数x:y传递给git fetch,因此git fetch会按照它的方法去执行;但是git pull则会尝试将其合并到当前分支,而不考虑x和/或y - torek

1

我从未见过 master:master 的语法。通常使用 git pull origin,例如:master。

我认为你想要做的是先进行一次 fetch。然后你就可以合并任何跟踪分支,或者切换到它们。


我也没有,所以看到文档中有这个内容时感到惊讶 - 并且惊讶地发现它似乎可以实现我想要的功能。(请记住,我不是在询问 fetch:我特别想知道是否可以以这种方式使用 pull。) - orome

0

拉取(pull)基本上是在当前(跟踪)分支上进行获取(fetch)操作,然后进行更新检出(checkout)。你所需要的只是获取操作。

git fetch origin master:master

1
不,我真的想要pull,但现在我看到我的问题了:我试图在不切换分支的情况下更新工作树文件。这没有意义,对吧? - orome

0
你真的需要 git pull 的合并功能吗? 如果不需要,你可以简单地执行以下操作:
git fetch
git branch -f master origin/master

这只是使本地主分支指向与远程主分支相同的提交。


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