是否有一个简单的git
命令可以判断(例如,通过退出状态)工作树是否具有未合并的路径/合并冲突?就像当git merge操作失败并且git返回外壳程序时,git的状态表明存在合并冲突。
到目前为止,我发现了git status
以及在未合并的情况下将输出的值列表(然后是XY状态代码):
X Y Meaning
-------------------------------------------------
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
-------------------------------------------------
因此到目前为止,对我而言唯一的检测方法是与表示未合并的XY代码列表进行匹配,例如:
AA | DD | [ADU]U | U[AD]
(添加了水平空白以提高可读性)
如果未合并路径,则检查出口状态为零(如果没有,则为非零)(如果我对git status的理解在这里是正确的):
git status --porcelain -z \
| grep -q -z '^\(AA\|DD\|[ADU]U\|U[AD]\) '
这变得相当复杂,我正在寻找一个更简单的命令(最好仅在git中使用)。
我想在bash脚本中将其用于本地构建,如果git存储库工作树中有任何未合并的路径,则拒绝进一步处理。
答案 0 :(得分:1)
这里已经有该问题的答案:https://stackoverflow.com/a/501461/1150795。
在合并过程中提供--no-commit
标志,如下所示:
git merge --no-commit --no-ff $BRANCH
然后检查分阶段进行的更改:
git diff --cached
要撤消合并,请输入:
git merge --abort
或者,您可以将本地分支与远程分支进行比较:
git fetch origin/master
git diff master origin/master