And*_*Ray 27 git rebase squash
对我们来说,一个常见的开发工作流程是checkout分支b,向它提交一堆,然后将所有这些提交压缩成一个(仍在b).
但是,在rebase -i压缩所有提交的过程中,经常会出现多个步骤的冲突.
我本质上希望将分支更改为一个提交,该提交表示最终提交时存储库的状态 b
我做了一些搜索,但我还没找到我正在寻找的东西.我不想,merge --squash因为我们想在合并之前测试压扁的功能分支.
Ras*_*oss 50
如果您不需要提交信息,那么您可以进行软重置.然后文件保持不变,当你提交时,这个提交将在你重置的提交之上.
要查找重置为的提交:
git merge-base HEAD BRANCH_YOU_BRANCHED_FROM
Run Code Online (Sandbox Code Playgroud)
然后
git reset --soft COMMIT_HASH
Run Code Online (Sandbox Code Playgroud)
然后重新制作提交,或许:
git commit -am 'This is the new re-created one commit'
Run Code Online (Sandbox Code Playgroud)
这与Rasmus的答案相似,但分为三个应始终有效的步骤:
$ git merge feature1
$ git reset --soft HEAD@{1}
$ git commit -c feature1
Run Code Online (Sandbox Code Playgroud)
说明: