前几天我不得不运行git filter-branch
。我按照github上的指示去做,但是出了些问题。我认为团队中的某个人没有在本地分支上运行rebase,而是合并了更改。自那时以来,提交日志中充满了重复提交,例如:
commit b0c03ec925c0b97150594a99861d8f21fd3ab22d
Author: XXX
Date: Wed Mar 19 17:01:52 2014 -0400
Removed most clearfixs in templates
commit f30c21d21b5ea715a99b0844793cb4b5f5df97a1
Author: XXX
Date: Wed Mar 19 17:01:52 2014 -0400
Removed most clearfixs in templates
commit 2346be43d0e02d3987331f0a9eeb2f12cd698ede
Author: XXX
Date: Wed Mar 19 16:40:26 2014 -0400
new redirect logic
commit 1383070b31bde1aaa9eda7c2a9bcb598dd72247b
Merge: d1e2eb6 94e07fe
Author: XXX
Date: Wed Mar 19 16:28:41 2014 -0400
Merge branch 'develop' of github.com:xxx/xxx into develop
commit 79ce7824688cf2a71efd9ff82e3c7a71d53af229
Merge: 6079061 1ed3967
Author: XXX
Date: Wed Mar 19 16:28:41 2014 -0400
Merge branch 'develop' of github.com:xxx/xxx into develop
commit d1e2eb645a4fe2a1b3986082d0409b4075a0dbc9
Author: XXX
Date: Wed Mar 19 16:28:36 2014 -0400
Fixed broken responsiveness for companies listing page and code refactoring.
commit 6079061f6ef1f856f94d92bc0fdacf18854b8a89
Author: XXX
Date: Wed Mar 19 16:28:36 2014 -0400
Fixed broken responsiveness for companies listing page and code refactoring.
奇怪的是,并非所有提交都是重复的,比如上面的"新重定向逻辑"。我能做些什么来解决这个问题吗?虽然相对温和,但现在我们的提交历史看起来很烂。这篇SO帖子建议保持原样,但为了后人着想,我宁愿有一个干净的提交历史。
git commit --amend
。这将打开一个编辑器,你需要用新的提交名称保存文件。 - VAIRIXgit log
显示的双重提交是相邻的,但是通过这个 rebase 命令生成的日志文件不会 - 它们在日志文件中的位置会非常不同。对于第二个问题,我们在历史过程中有一些具有相同消息但变更非常不同的提交 - 例如合并提交通常具有相同的消息。我不太关心将它们重命名,而是想检查哪些是冗余的。也许有一种方法可以显示日志文件中更改的摘要吗? - ysimonsongit rebase -i
的文件中交换提交的行即可。另一方面,为了判断提交是否相等,我会使用gitg
工具,检查具有相同名称的提交,并验证这些提交是否具有相同的更改。我不知道是否有任何自动比较工具。 - VAIRIX