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