git拉在另一个分支上

nob*_*led 8 git

如果我正在分支机构然后意识到我需要将另一个分支合并到我的这里是我当前的工作流程(对于这个例子,我想说我正在我的分支机构工作并希望在master中合并):

git stash
git checkout master
git pull
git checkout my-branch
git merge master
git stash pop
Run Code Online (Sandbox Code Playgroud)

有没有办法让git拉出当前签出的分支以外的分支,还是有更好的方法来做到这一点?

例如,这是我想要做的事情(再次让我说我在我的分支上并希望合并master):

git pull master
git merge master
Run Code Online (Sandbox Code Playgroud)

git-pull手册页说git pull只是一个get get fetch后跟git merge,所以有没有办法在一个分支上进行git pull的合并部分而不是当前检出的分支?

或者我要求的是不可能的?

nir*_*019 36

将更改从branch1拉入branch2

假设您有这些分支:

  • 掌握
  • 分支1
  • 分支2

所以你想将更改从branch1拉到branch2。您可以执行以下操作:

git checkout branch2
git pull origin branch1
Run Code Online (Sandbox Code Playgroud)

  • @GustavoParrado 问题是 git pull 在另一个分支上。因此,尽管这将是相关的答案,因为我将分支 1 拉到分支 2。 (2认同)

Chr*_*ris 12

我发现了一个对我有用的咒语:

git fetch origin master:master
Run Code Online (Sandbox Code Playgroud)

然后(如果你想立即合并):

git merge master
Run Code Online (Sandbox Code Playgroud)

我真的很惊讶找到答案是多么困难,因为它似乎是一个常见的用例.

  • `get fetch originbranch:branch` 的作用与从 `branch` 调用的 `git pull` 的作用完全相同吗? (12认同)
  • 如果您希望将分支拉到不同的本地分支名称下,则此语法实际上很有用。 (6认同)
  • 这应该是公认的答案,因为它准确地回答了问题。接受的答案没有提供正确的命令,并且根据问题执行了您不期望的操作。 (5认同)
  • @C.Binair 或者,如果我出于某种原因不想获取所有分支,我只需执行 `git fetch originbranch2` 并从 `origin/branch2` 合并到我的工作分支中。我还可以澄清本地“branch2”没有更新。每当我切换到“branch2”时,我也必须执行“git merge origin/branch2” (2认同)

Pet*_*ter 9

你也可以试试这个:

git fetch
git merge origin/master
Run Code Online (Sandbox Code Playgroud)

这不会更新您的本地master指针,但会将最新的指针合并 origin/master到您当前的本地分支中。


Seb*_*bMa 8

我们可以使用如下git pull命令从同一存储库中的另一个分支获取更改:

$ git pull origin <target-branch>
Run Code Online (Sandbox Code Playgroud)

请参阅以下EXAMPLES部分man git-pull

   •   Merge into the current branch the remote branch next:

           $ git pull origin next
Run Code Online (Sandbox Code Playgroud)

  • 你应该解释你的答案或者至少添加一些参考资料,这样其他人就能完全理解你的答案。 (6认同)
  • “我们可以从另一个分支获取更改......”是一个非常误导性的引导。需要更改为“我们可以*合并*来自另一个分支的更改......”。 (3认同)

Rob*_*eld 6

尝试这个:

git pull yourRepositoryName master
Run Code Online (Sandbox Code Playgroud)

  • 我试过这个,但我想我没有意识到你必须为 yourRepositoryName 放置什么。它实际上不是存储库的名称,而是用于检出存储库的 URL。例如:`git pull git@github.com:foo/bar.git master` (9认同)
  • 对于遇到此问题的任何其他人,`git remote -v` 将显示所有别名及其 URL。这是有关别名的更多信息:http://gitref.org/remotes/ (6认同)
  • 嗯,因此,如果您具有默认的`origin`别名,则可以运行`git pull origin master` (4认同)
  • 确切地。您可以使用`git remote add yourAlias https://github.com/yourGitHubRepo´ 自己指定别名 (3认同)
  • 没错,我假设您已经为该 URL 创建了别名。很高兴有帮助! (2认同)
  • 这并不能回答问题。此命令会将给定分支合并到您的当前分支中。对于正确的命令,请寻找克里斯的答案。它也拥有最多的票数。 (2认同)
  • 这个答案不符合OP的要求,它不会更新master,只会更新你当前的分支。查看 @chris 关于如何更新 master 的答案,而不检查 master (2认同)

小智 6

如果您通常将一些远程分支合并到“feature/*”分支,例如“master”、“develop”或“release/*”,那么最好的策略不是合并,而是在远程分支上重新建立基础。然后,来自您分支的提交将应用于其他分支历史记录之上。之后可以快速合并到这个远程分支中。

git pull origin master
git rebase master
Run Code Online (Sandbox Code Playgroud)