如何将develop分支中的git提交合并到一个功能分支

git*_*itq 31 git git-merge git-rebase feature-branch

我的git仓库中有一个开发分支和一个功能分支.我添加了一个开发提交,现在我想将该提交合并到我的功能分支.如果我这样做

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

我最终得到了合并提交.由于我将频繁地将关于开发的新提交合并到我的功能分支,所以我想避免所有这些不必要的合并提交.我看到这个答案建议做一个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
Run Code Online (Sandbox Code Playgroud)

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

ben*_*n_h 30

要将一个分支集成到另一个分支,您必须合并或重新绑定.因为在任何其他地方没有引用的引用(不合并到其他本地分支;没有被推送到任何远程分支)的rebase提交是唯一安全的,所以合并通常更好.

如果您的功能分支纯粹是本地的,那么您可以在开发之前对其进行重新定义.但是,理解rebase如何工作需要时间,在此之前,很容易意外地产生重复或丢弃的提交.合并提交可能看起来很嘈杂,但合并保证始终是安全和可预测的.

要获得更好的视图,请尝试在图表中记录所有内容:

git log --all --graph --oneline --decorate
Run Code Online (Sandbox Code Playgroud)

同样值得考虑的是你是否真的需要develop合并的提交feature.通常它们是可以分开的东西,直到feature合并到develop以后.

如果您经常发现您确实需要develop代码,feature则可能表明您的功能分支太长时间运行.理想情况下,功能应该以这样的方式分割,即它们可以独立工作,而不需要在整个过程中进行定期集成.


Cha*_*esB 12

如果您只想从develop分支机构进行一次提交,您可以在feature分支机构中挑选它:

 git checkout feature
 git cherry-pick -x <commit-SHA1>
Run Code Online (Sandbox Code Playgroud)

提交将作为一个新的应用程序在您的分支上应用(假设它不会产生冲突),当您合并回feature分支时,Git将处理它而不会发生冲突.