我正在处理我的回购的另一个分支,并需要从主分支中引入更改。我习惯做git rebase master
,并且一切正常。然而,在最近的几个项目中,我看到提交在日志中重复,和垫底倾向于(大声地)抱怨:git rebase,提交重复
$ git log --graph --abbrev-commit --decorate ...
* 4988d49 - (2 hours ago) Merge branch 'branchname' of ... 3
|\
| * e979be1 - (2 days ago) change verbiage 10
| * 93a1c80 - (2 days ago) Merge branch 'branchname' of ... 2
| |\
| | * 4e4e790 - (2 weeks ago) Merge branch 'branchname' of ... 1
| | |\
| | | * 87cc232 - (8 weeks ago) change verbiage 3
| | | * 3d5cf09 - (8 weeks ago) change verbiage 2
| | | * aea4cbd - (9 weeks ago) change verbiage 1
| | * | a7043ef - (2 weeks ago) change verbiage 6
| | * | fa3413b - (2 weeks ago) change verbiage 5
| | * | be038a7 - (2 weeks ago) change verbiage 4
| | * | 37cb1e6 - (8 weeks ago) change verbiage 3
| | * | 1ab71c6 - (8 weeks ago) change verbiage 2
| | * | c4560f4 - (9 weeks ago) change verbiage 1
| * | | d3211fd - (2 weeks ago) change verbiage 6
| * | | 72a2a4a - (2 weeks ago) change verbiage 5
| * | | ae1c123 - (2 weeks ago) change verbiage 4
| * | | 8328c08 - (8 weeks ago) change verbiage 3
| * | | e52588f - (8 weeks ago) change verbiage 2
| * | | 114cbec - (9 weeks ago) change verbiage 1
* | | | 38bd6ce - (2 hours ago) change verbiage 9
* | | | 5aaf360 - (2 hours ago) change verbiage 8
* | | | 2745790 - (2 days ago) change verbiage 7
* | | | 7bb613f - (2 weeks ago) change verbiage 6
* | | | 726a312 - (2 weeks ago) change verbiage 5
* | | | 771dd7f - (2 weeks ago) change verbiage 4
* | | | b451926 - (8 weeks ago) change verbiage 3
* | | | 484d5dc - (8 weeks ago) change verbiage 2
* | | | 630df34 - (9 weeks ago) change verbiage 1
(我已经改变了提交信息为简单起见,这里真的是只尽管有四条“管线”,但我在这里展示了一个分支)。我已经在这个项目上做了一些改版,我认为它们可以根据重复(比如说)改变措词1的次数来描述。
我以为我正在通过重新合并来完成项目工作流程中的“最佳实践”。我以为至少有一个以前的rebase是用-no-ff
完成的,但是我看不到行为上的差异。
当提交重播时,它们发生冲突(显然,将一个提交置于其本身之上是有问题的),所以我不得不做一个交互式重定位,删除所有重复的提交。
缺乏对回购本身的访问,这是我的工作流程的问题吗?这是否表明分支机构存在其他问题?
非常好的答案,谢谢凯尔。另一个问题(我忘了提及)是我在repo服务器上有分支,所以'git push origin'几乎总是需要强制性提交才能推送。也许我提出的Dag最大的“问题”是它只有一个时显示四个分支;我宁愿保持一个“干净”的DAG,而不显着重复提交消息。知道这是“正常行为”有帮助。 – r2evans
如果整个历史已经出现在世人眼前,而人们正在消费它,那就留下吧。这不是很好或者什么,但是你不应该因为伤害其他开发者而混淆公共回购。所以一旦你推动起源,你应该做出新的提交,而不是变成旧的提交。 –