Существует ли простая команда 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, которые представляют unmerged , например ::
AA | DD | [ADU]U | U[AD]
(добавлен горизонтальный пробел для удобства чтения)
Проверка с нулевым статусом выхода в случае неотключенных путей (или ненулевым, если его нет) будет (если мое понимание статуса git здесь верно):
git status --porcelain -z \
| grep -q -z '^\(AA\|DD\|[ADU]U\|U[AD]\) '
Это становится довольно запутанным, и я ищу более простую команду (лучше всего с git).
Я хочу использовать его в bash-скрипте для локальной сборки, которая отклоняет дальнейшую обработку, если в рабочем дереве git-репозиториев есть какие-либо незакрытые пути.