我有一个git项目,一个贡献者在很长一段时间后回来了,并且在提交之前做了一个丑陋的合并,而不是拉扯。
结果,项目历史现在看起来像:
e6a1272 * Current tip
3750671 * Another (somewhat less ugly) merge
|\
a5df959 | * Progress...
bb55ba3 * | Ugly merge. Catch up on weeks of progress, plus add one line
|\ \
| |/
67d18aa | * Many more commits...
937909a | * ...
094c77a | * Progress...
3ac93c1 | * Progress...
cbca9b4 * | Progress...
|/
1055f06 * An old commit, weeks ago
449cb7c * Another old commit
...
说句公道话,这并不可怕,但是:
bb55ba3
与1055f06
相对的数千行差异,而不是67d18aa
的三行实际变化。在github界面中,没有简单的方法来查看此提交的实际作用。git log --first-parent
消除了大部分历史我已经辅导过贡献者将来如何避免这个问题,但是我的问题是:
有没有办法在不重写历史的情况下告诉github和--first-parent
遵循哪个分支?在不重写历史记录的情况下,我还能做些什么使它更清洁?
(也就是说,我可能可以重写历史记录,因为该项目是私有的,只有少数人可以看到它。因此,也许这是最好的选择?或者我是否因为担心这个而过于整洁? )
哦,还有一个相关的问题:类似的问题将来可能会困扰我。我可以设置任何可以防止这种和类似问题的git hook吗?