【问题标题】:How to tell if my git repo is in a conflict?如何判断我的 git repo 是否存在冲突?
【发布时间】:2018-09-21 06:53:48
【问题描述】:

有没有我可以通过编程调用来确定我的 git repo 是否处于每个状态的命令

  1. 合并冲突
  2. 变基冲突
  3. 由于 stash pop 引起的冲突

我特别想知道我是否可以通过编程方式发出 git merge --abort(在 1 的情况下)和 git rebase --abort(在 2 的情况下)以回到已知的良好状态。

【问题讨论】:

    标签: git git-merge-conflict


    【解决方案1】:
    1. 在合并期间,MERGE_HEADMERGE_MODEMERGE_MSG 文件存在于您的 .git 文件夹中。
    2. 在变基期间,rebase-apply 文件夹存在于您的 .git 文件夹中。请参阅 this question 及其答案。
    3. stash pop 执行合并,但不是真的。 .git 文件夹的内容似乎和往常一样。我不完全确定,但是由于无法中止从 stash 中的合并(无法完成 git stash pop --abort 之类的操作,并且如果您想中止,则必须使用良好的 ol' git reset --hard HEAD),我不认为存储库处于真正的“冲突状态”。您所拥有的只是冲突文件中的冲突标记。

    【讨论】:

    • 感谢您的回答。关于 3,我刚刚设置了一个带有简单 stash pop 冲突的存储库,并且实际上不存在任何 MERGE 文件。
    • 编辑了我的答案,但仍然不完全确定是否有更好的方法 3。
    • .git 中一定有不同之处,因为如果我尝试将checkout 转到不同的分支,我会得到error: you need to resolve your current index first
    • 我猜相关信息存储在.git/index,但我不知道如何解析该文件。它似乎是二进制的。
    • checkout HEAD 似乎是区分stash pop 冲突与无冲突的好方法。
    猜你喜欢
    • 2016-10-07
    • 2011-10-07
    • 2013-05-12
    • 1970-01-01
    • 2020-01-07
    • 2021-07-26
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多