将分支折叠为一个提交

kpo*_*ter 3 git github

基本上我一直在研究一个功能,但是当我将该功能推回到主仓库以进行代码审查时,他们喜欢整个功能被推送为一次提交.我通常使用git rebase -i这个并设置除第一次提交以外的所有内容和第一次编辑.然后我会在每次发生冲突时粘贴最新的文件.

我宁愿不必在冲突期间粘贴各种文件.我希望能够保留最新的文件,并基本上删除它们如何变得更简单的命令的历史记录.

编辑:

我正在寻找一个等同于这个bash脚本的Git命令:

for file in `git diff --name-only master foo`
git checkout foo $file
Run Code Online (Sandbox Code Playgroud)

Tod*_*obs 11

使用Squashed Merges

你想要的是一个被压扁的合并.这会将您的所有更改合并到工作树中,但您可以自己进行实际提交.例如:

git checkout foo
git rebase -i master
git checkout master
git merge --squash foo
git commit -m 'Squashed commit.'
Run Code Online (Sandbox Code Playgroud)

来自rebased分支的所有更改都将作为单个提交进行,并带有一条提交消息.只要您在foo分支中解决了与rebase的任何冲突,合并时在合并到master时不会产生冲突.