当我的分支与master没有冲突时,我更喜欢做git rebase
,因为它保留了简单的历史记录。
但是当存在冲突时,有时rebase
会让我解决每个远程提交的冲突,这是更多的工作。另外,我认为如果存在冲突,那么冲突解决引入新bug的可能性就更高,所以在这种情况下我宁愿做一个merge
,而是清楚记录我开始编码的地方,是什么我做了,以及我如何解决冲突。
所以我一直这样做:
git fetch -> git rebase
而且,如果有任何冲突:
git rebase --abort
git merge
我发现自己每天都会这样做几次。有没有内置的方法来实现这一目标?或者我应该创建git
别名?
答案 0 :(得分:2)
我更喜欢手动检查传入的提交,然后决定rebase-vs-merge,但实际上你可以使用git rebase
将以零退出的事实自动执行此操作(成功)状态,如果它完成rebase,如果不成功,则为非零(失败)状态。因此,您可以编写一个小的shell脚本或适合用作shell别名的单行命令:
git fetch && { git rebase || { git rebase --abort && git merge; } }
表示运行git fetch
,如果成功,则运行支持的一系列命令:
git rebase
,如果成功,别的什么都没有;或
git rebase --abort
,如果成功,git merge
(实际上并不需要内括号,因为&&
比||
更紧密地结合,至少在sh和bash中。它们更多是为了清晰意图。)