是否有一个简单的git
命令可以告诉(例如,通过退出状态(工作树是否具有未合并的路径/合并冲突?就像当git合并操作失败时,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状态的理解正确在这里(:
git status --porcelain -z
| grep -q -z '^(AA|DD|[ADU]U|U[AD]) '
这变得相当复杂,我正在寻找一个更简单的命令(仅使用git(。
我想在bash脚本中使用它作为本地构建,如果git存储库中有任何未合并的路径,则拒绝进一步处理。
在这里已经有答案: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