Как ошибки слияния или ошибки перебазирования. Есть ли уникальный код ошибки?
Ответы:
Я настроил тест на провал. Вот что у меня получилось:
$ git merge newbranch
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ echo $?
1
0Как и ожидалось, Git возвращается при правильном слиянии.
&&; вот как реализованы их тесты.
git rebaseже поведение?
Короче нет. Вы увидите код выхода 1 для ошибок и 0 для успеха.
Из быстрого поиска источника можно найти некоторые из ожидаемых 127 и 128 для их конкретных целей (команда не найдена, ошибки уже сообщены), а также несколько необычных кодов в нескольких местах, но для стандартных ошибок это все exit(1).
manстраницах.
Ошибка 128, при отсутствии сообщения об ошибке от git, может быть уловкой «неожиданной проблемы».
Я получал это при операциях, которые требовали изменения файлов в .git (например, " git checkout -- myfile", чтобы вернуть измененный файл) другим пользователем. (В моем случае " chmod -R og+w .git" это исправлено; естественно, не делайте этого, если вы не понимаете, как это влияет на безопасность в вашем случае!)
git push --delete origin a_remote_tag_name
Это возвращает 256, если тег не существует с использованием версии git 1.8.3.1
Было бы неплохо иметь сводный список конкретных кодов возврата, возвращаемых каждой командой, и того, что они указывают. Это также может помочь предотвратить изменение значений кода возврата (на которые могут полагаться сценарии автоматизации).
Git 2.24 (4 квартал 2019 г.) действительно иллюстрирует, как gitкоманды возвращают код.
См. Фиксацию 50094ca , фиксацию c1a6f21 , фиксацию 854b5cb , фиксацию dd2b6b6 , фиксацию 6bd26f5 , фиксацию c6ec6da , фиксацию f2e2fa8 , фиксацию 460609c , фиксацию 92014b6 , фиксацию 0ab74e9 , фиксацию cb46c40 , фиксацию b562a54 (27 августа 2019 г.) и фиксацию b562a54 ( 27 августа 2019 г.) и пользователя Denton Liu ( Denton-L) .
(Объединено Junio C Hamano - gitster- в коммите 1c6fc94 , 30 сентября 2019 г.)
t4014: перестать терять коды возврата команд git
В настоящее время есть два способа потери кодов возврата команд Git.
Первый способ - когда команда находится перед конвейером. В канале используется только код возврата последней команды. Таким образом, коды возврата для всех остальных команд будут замаскированы.
Перепишите каналы так, чтобы в восходящем потоке не было команд Git.Другой способ - когда команда находится в подоболочке без присваивания .
Код возврата будет потерян в пользу окружающих команд.
Перепишите экземпляры этого так, чтобы команды Git выводились в файл, а окружающие команды вызывали только подоболочки с командами, отличными от Git.
Поэтому вместо написания:
git cat-file commit rebuild-1 | grep "^Side .* with .* backslash-n"
Тип:
git cat-file commit rebuild-1 >actual &&
grep "^Side .* with .* backslash-n" actual
git merge(в 1.7.4 - kernel.org/pub/software/scm/git/docs/v1.7.4/git-merge.html ) только упоминается статус возврата в одном месте (если вы используете "- -ff-only "и он не может выполнить быструю фиксацию вперед, он возвращает ненулевое значение - он явно не говорит, что возвращается, если все работает или возник конфликт слияния.