如何从另一个分支(开发)更新我的工作Git分支?

Eki*_*bal 49 git branch github git-merge

我在一个月前为我的代码创建了一个新的分支,我从develop分支创建了feature1分支.

?  git branch 
  develop
* feature1
Run Code Online (Sandbox Code Playgroud)

我已经在feature1上工作了一个月了,并且很多更改都推动了开发分支,如何在开发一个版本的最新提交中更新我当前的分支feature1

我不想签出master并合并我的feature1分支.我也不想使用git cherry-pick手动将提交从开发转移到feature1.

有帮助吗?

mus*_*iKk 75

你只需将develop合并到feature1:

git checkout feature1
git merge develop
Run Code Online (Sandbox Code Playgroud)

没有必要涉及另一个分支,如主人.

  • 当然会。问题本质上是“我如何将开发的所有提交放入分支”。 (6认同)
  • 不,不是,它是“我在分支 X 工作,但我希望该分支拥有来自开发的最新更新”,当您进行 PR 来开发时,您只希望拥有您的分支提交,而不是所有提交历史记录 (3认同)
  • 但这会将开发的所有提交放入分支中 (2认同)
  • 我是说。“develop”的当前状态将在“feature1”中,但不会在那里生成提交。通过合并,看起来好像所有这些开发提交都是在“feature1”中生成的 (2认同)
  • 抱歉,我认为我解释得不好。让我再试一次...开发人员运行`git mergedevelop`后,feature1的提示将被更新,包括来自develop的新代码。这使得开发人员可以使用最新的代码。合并不会以任何方式影响开发分支。也许在未来的某个时候,该开发人员会希望将 feature1 合并到开发中(即其他方式)以更新开发技巧,这需要审查。那时,无论生成什么临时合并提交都将在审核中指定,以便审核者可以看到开发将如何更改的差异。 (2认同)

sta*_*ave 15

首先,您需要更新您的开发分支,然后签出功能并对其进行合并/重新设置基础。

git checkout develop
git pull
git checkout feature/myfeature
Run Code Online (Sandbox Code Playgroud)

现在您可以在运行之间做出决定

git merge develop
git rebase develop
Run Code Online (Sandbox Code Playgroud)

merge和之间的区别rebaserebase保留分支中所有提交的历史记录,如果您的部分提交有很多值得保留的内容,则这很重要。

rebase在某些团队中,该选项是必需的。

准备就绪后,您可以推送到自己的分支(例如,对于拉取请求)

git push origin feature/myfeature
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是比指定答案更好的解决方案。 (2认同)

Eli*_*iuX 6

这个用例对于保持更新你的 PR 分支非常有帮助。首先,我建议您先获取远程更改,即git fetch ,然后从develop,但从远程更改,例如合并或变基

git rebase -i origin/develop
Run Code Online (Sandbox Code Playgroud)

或者

git merge origin/develop
Run Code Online (Sandbox Code Playgroud)

这样你就可以更新你的 PR 分支,而无需在分支之间来回切换。

  • 在 git rebase 中,您将两者混合重写分支的历史记录,通过合并,您只需在新的合并提交中将另一个分支的更改应用到您的分支中。 (2认同)