【发布时间】:2018-09-21 06:53:48
【问题描述】:
有没有我可以通过编程调用来确定我的 git repo 是否处于每个状态的命令
- 合并冲突
- 变基冲突
- 由于 stash pop 引起的冲突
我特别想知道我是否可以通过编程方式发出 git merge --abort(在 1 的情况下)和 git rebase --abort(在 2 的情况下)以回到已知的良好状态。
【问题讨论】:
有没有我可以通过编程调用来确定我的 git repo 是否处于每个状态的命令
我特别想知道我是否可以通过编程方式发出 git merge --abort(在 1 的情况下)和 git rebase --abort(在 2 的情况下)以回到已知的良好状态。
【问题讨论】:
MERGE_HEAD、MERGE_MODE 和 MERGE_MSG 文件存在于您的 .git 文件夹中。rebase-apply 文件夹存在于您的 .git 文件夹中。请参阅 this question 及其答案。stash pop 执行合并,但不是真的。 .git 文件夹的内容似乎和往常一样。我不完全确定,但是由于无法中止从 stash 中的合并(无法完成 git stash pop --abort 之类的操作,并且如果您想中止,则必须使用良好的 ol' git reset --hard HEAD),我不认为存储库处于真正的“冲突状态”。您所拥有的只是冲突文件中的冲突标记。【讨论】:
stash pop 冲突的存储库,并且实际上不存在任何 MERGE 文件。
.git 中一定有不同之处,因为如果我尝试将checkout 转到不同的分支,我会得到error: you need to resolve your current index first。
.git/index,但我不知道如何解析该文件。它似乎是二进制的。
checkout HEAD 似乎是区分stash pop 冲突与无冲突的好方法。