【问题标题】:Can I pull to a branch other than the one I'm on?我可以拉到我所在的分支以外的分支吗?
【发布时间】:2014-01-18 11:39:30
【问题描述】:

我需要能够拉到一个我可能不在的分支上(事实上,为了争论,假设我不知道我在哪个分支上)。例如,我有一个远程origin,其分支master 由本地master 使用跟踪分支以通常的方式在本地跟踪。我可以提供给git-pull 的选项或参数与切换到master、拉动然后切换回我开始的任何分支具有相同的效果吗?

这里的许多答案表明这是不可能的,但<refspec> 下的<dst>documentation's discussion 表明类似

git pull origin master:master 

会成功的。是这样吗?

【问题讨论】:

  • 这是我用的..." git pull origin mySourceBranch"
  • @Jahnux73:在我的场景中mySourceBranch 是什么?是mastermaster:masterremotes/origin/master——还是别的什么。我希望效果与切换到master(具有通常的跟踪设置)后拉动的效果相同。
  • 当我在分支 'feature' 上时,当我进行 'git pull origin develop' 时,它会在我的实际分支 'feature' 上拉取 'develop branch'。 (我认为是你的主人)

标签: git branch git-pull


【解决方案1】:

git pull 基本上是 git fetch 后跟 git merge

不可能为另一个分支执行git pull,因为不可能为另一个分支执行git merge。为了能够做到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

【讨论】:

  • 并且,为了专门解决git pull origin x:ygit pullx:y 参数传递给git fetch,所以git fetch 做它做的事情;但随后git pull 尝试合并到当前分支,不管x 和/或y
【解决方案2】:

你真的需要git pull的合并功能吗?

如果没有,您可以这样做:

git fetch
git branch -f master origin/master

这只是让本地 master 指向同一个提交,远程 master 指向。

【讨论】:

    【解决方案3】:

    拉取基本上是一个提取,然后检查当前(跟踪)分支上的更新。你想要的只是获取。

    git fetch origin master:master
    

    【讨论】:

    • 不,我真的想要pull,但我现在看到了我的问题的问题:我正在尝试在不切换分支的情况下更新工作树文件。这没有任何意义,对吧?
    【解决方案4】:

    我从未见过 master:master 语法。通常: git pull origin 例如主人。

    我认为你想要做的是先获取。然后您就可以合并任何跟踪分支,或切换到它们。

    【讨论】:

    • 我也没有,所以我很惊讶在文档中看到它 - 并且惊讶地发现它似乎做了我想要的。 (记住我不是在问fetch:我是在问我是否可以这样使用pull。)
    猜你喜欢
    • 2015-04-18
    • 2014-05-28
    • 2015-11-06
    • 2014-03-17
    • 2018-01-27
    • 2018-03-29
    相关资源
    最近更新 更多