Git rebase 自动冲突中止

3
我希望以一种方式配置 Git,既能同时实现这两个不幸互斥的最佳选项:
[pull]
    ff = only
    rebase = true

基本上,我希望在拉取时自动变基,但如果存在冲突,则应该中止变基。
这样,如果我在后台更新,我的存储库始终保持有效状态。

1个回答

1

经过一些尝试,我最终得出了以下的shell别名:

[alias]
    l = !git pull --rebase --autostash || (>&2 echo "Error - aborting rebase!" && git rebase --abort)

它拉取并变基,将所有本地更改放在远程分支之上。如果出现错误,则会中止变基并回到先前的状态。有些情况下,命令失败并不是由于变基冲突,但这仅会导致abort也出错,并且不会创建任何无效状态。
这是我现在首选从远程更新的方式,如果出了问题,我仍然可以使用默认的pull命令。
如果有更好的建议,请告诉我!

1
即使由于其他错误而未启动rebase,此命令也将运行git rebase --abort。我认为唯一的选择是在出现错误后检查rebase状态(git status可以以某种方式执行此操作)。 - Timmmm
是的,我在我的答案中提到了这一点。如果您有一个不会增加不必要复杂性的替代方案,我非常乐意倾听 :) - xeruf
啊,好主意 - 我没想到。我查了一下 git status 用于检测 rebase 的逻辑。我可能会使用它。如果你认为这是不必要的,那就由你决定,但它只是检查几个文件是否存在,所以你至少可以在 Bash 中轻松实现它。 - Timmmm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接