【问题标题】:Git rebase auto abort on conflictGit rebase 冲突时自动中止
【发布时间】:2020-11-06 09:40:06
【问题描述】:

我想以一种方式配置 git 以充分利用这两个选项,不幸的是它们是相互排斥的:

[pull]
    ff = only
    rebase = true

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

【问题讨论】:

    标签: git repository config rebase pull


    【解决方案1】:

    经过一番折腾,我总结出以下 shell 别名:

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

    它拉取和变基,将所有本地更改放在远程分支之上。如果有错误,rebase 将被中止,一切都回到以前的状态。 在极少数情况下,命令失败不是因为 rebase 冲突,但这只会导致 abort 出错并且不会创建任何无效状态。

    这是我现在首选的远程更新方式,如果出现问题,我仍然可以使用默认的pull 命令。
    如果有人有更本土的建议,我仍然全神贯注!

    【讨论】:

    • 这将运行git rebase --abort,即使 rebase 由于其他一些错误而从未启动。我认为唯一的选择是在出错后检查变基状态(git status 以某种方式完成)。
    • 是的,我自己在回答中提到了这一点。如果您有一个不会增加不必要的复杂性的替代方案,我会全力以赴:)
    • 啊,好点 - 错过了。我查了the logic git status uses to detect rebases。我可能会用那个。如果您认为没有必要,由您决定,但它只是检查一些文件是否存在,因此您至少可以轻松地在 Bash 中实现它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 2014-06-06
    • 1970-01-01
    • 2011-12-16
    • 2017-07-14
    • 2021-10-16
    相关资源
    最近更新 更多