【问题标题】:How to merge git commits in the develop branch to a feature branch如何将开发分支中的 git 提交合并到功能分支
【发布时间】:2013-07-25 10:59:34
【问题描述】:

我的 git 存储库中有一个开发分支和一个特性分支。我添加了一个开发提交,现在我希望将该提交合并到我的功能分支。如果我这样做

git checkout feature
git merge develop

我最终得到了一个合并提交。由于我会经常将开发中的新提交合并到我的功能分支中,因此我想避免所有这些不必要的合并提交。我看到这个answer 建议做一个git rebase develop,但它最终将我的分支倒带得太远并且rebase 失败了。

更新: 我最终做的是

git checkout feature
git merge develop # this creates a merge commit that I don't want
git rebase # this gets rid of the merge commit but keeps the commits from develop that I do want
git push

更新:我刚刚注意到,当我合并然后 rebase 到功能分支时,develop 上的原始提交会获得不同的哈希值。我认为这不是我想要的,因为最终我会将功能重新合并到开发中,我猜这不会很好玩。

【问题讨论】:

  • 嗯,我知道当你变基时你可以将你的提交“压缩”在一起,作为一种在你的分支上没有太多提交的方法。查看gitready.com/advanced/2009/02/10/…
  • 变基的答案,如果它不适合你,还有另一个问题你应该问为什么它不工作。

标签: git git-merge git-rebase feature-branch


【解决方案1】:

如果您只想要来自 develop 分支的一个提交,您可以在您的 feature 分支中挑选它:

 git checkout feature
 git cherry-pick -x <commit-SHA1>

提交将作为新的提交应用到您的分支之上(前提是它不会产生冲突),当您合并回 feature 分支时,Git 将处理它而不会发生冲突。

【讨论】:

    【解决方案2】:

    要将一个分支集成到另一个分支,您必须合并或变基。因为只有在其他地方没有引用(没有合并到其他本地分支;没有推送到任何远程)的 rebase 提交才是安全的,所以通常最好合并。

    如果您的功能分支纯粹是本地的,您可以在开发基础上对其进行变基。然而,理解 rebase 是如何工作的需要时间,在你这样做之前,很容易意外地产生重复或丢弃的提交。合并提交可能看起来很嘈杂,但可以保证合并始终是安全且可预测的。

    为了获得更好的视图,请尝试将所有内容一起记录在图表中:

    git log --all --graph --oneline --decorate
    

    您是否真的需要develop 上的提交合并到feature 中也是值得考虑的。通常它们是可以分开的,直到 feature 稍后合并到 develop 中。

    如果您经常发现在feature 上确实需要develop 代码,那么这可能表明您的功能分支运行时间过长。理想情况下,功能应该以可以独立处理的方式进行拆分,而无需在此过程中进行定期集成。

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 2015-11-18
      • 1970-01-01
      • 2014-12-04
      • 2023-02-07
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多