Як помилки злиття або помилки перебазування. Чи має він унікальний код помилки?
Відповіді:
Я налаштував тест на невдачу. Ось що я отримав:
$ 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
Git повертається, 0коли він правильно зливається, як і слід було очікувати.
&&; саме так впроваджуються їх тести.
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 (Q4 2019) ілюструє, як git команди повертають код.
Див. Коміт 50094ca , коміт c1a6f21 , коміт 854b5cb , коміт dd2b6b6 , коміт 6bd26f5 , коміт c6ec6da , коміт f2e2fa8 , коміт 460609c , коміт 92014b6 , коміт 0ab74e9 , коміт cb46c40 , коміт b562a54 (27 серпня 2019), та коміт 20 серпня 2019), від Denton Лю ( 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 ", і він не може зробити перемотування вперед, він повертає ненульове значення - в ньому явно не сказано, що повертається, якщо все працює або якщо був конфлікт злиття.