我遇到了很多情况,我的git日志变得混乱了数百次提交。
commit d: add sky to scenery
commit c: add Christina to characters
commit b: add flowers to scenery
commit a: add Andrew to characters
在commit f = b + d
?
commit f: add scenery
commit e: add characters
答案 0 :(得分:0)
项目随着时间的推移获得大量提交是很正常的: - )
如果您确定要将它们融合在一起,我会看到两种可能性:
使用交互式git rebase
:
git rebase --interactive HEAD~10
打开一个显示最近10次提交的编辑器。将pick
替换为squash
(附加提交消息)或fixup
(丢弃提交消息)。通过移动线条,您可以选择将哪些提交合并在一起。但是,更改顺序可能会导致合并冲突。
编辑将首先代表当前的历史:
pick ... older commits
pick aaaaaaa add Andrew to characters
pick bbbbbbb add flowers to scenery
pick ccccccc add Christina to characters
pick ddddddd add sky to scenery
将其更改为您的喜好,例如:
pick ... older commits (left untouched)
reword aaaaaaa keep message, open editor to edit
squash bbbbbbb append message to aaaaaaa
fixup ccccccc discard message
fixup ddddddd discard message
Meld一起从其他(远程)分支提交。
对于尚未成为当前分支的一部分的提交,挑选他们的更改并使用所有这些提交创建新提交可能是最好的方法。请使用git cherry-pick
:
git cherry-pick --no-commit $commit1
git cherry-pick --no-commit $commit2
...
git commit -m "new commit message"
在这两种情况下,您都会创建具有不同SHA1值的新提交!编辑历史记录时要小心,并尽量避免使用已发布/共享的存储库。