我正在处理代码库的另一个分支,并需要将主分支的更改合并到该分支。我通常使用 git rebase master
,一切正常。然而,在最近的几个项目中,我发现提交记录会重复出现在日志中,进行 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的重复次数,我认为它们可以被简单地追踪到。
我以为通过变基合并进行项目工作流程是一个“最佳实践”,但我认为之前的变基中至少有一个是使用了 -no-ff
,但我看不到行为上的区别。
当提交被重新播放时,它们会发生冲突(显然,将一个提交放在自己的顶部是有问题的),所以我被迫进行交互式变基,删除所有重复的提交。
没有访问仓库本身,这是否是我的工作流程存在问题?这是否表明分支中存在其他问题?
git push origin
几乎总是需要强制提交才能推送。也许我对我的DAG最大的“问题”是它显示了四个分支,而实际上只有一个;我更喜欢保持一个“干净”的DAG,没有明显重复的提交消息。知道这是“正常行为”是有帮助的。 - r2evans