例如合并错误或重新设置错误。它具有唯一的错误代码吗?
Answers:
我将测试设置为失败。这就是我得到的:
$ 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详情,请参见他们的页面。
git status在非git repo上运行将返回128,而不是1,这有助于快速确定git repo是否存在。
错误128(没有来自git的错误消息)可能是“意外问题”的全部。
我正在git checkout -- myfile通过其他用户修改.git下文件的操作(例如,“ ”以还原修改后的文件)进行操作。(在我的案例中,“ chmod -R og+w .git”已解决;很自然,除非您了解案例的安全隐患,否则不要这样做!)
Git 2.24(Q4 2019)确实说明了 git命令返回代码。
请参阅提交50094ca,提交c1a6f21,提交854b5cb,提交dd2b6b6,提交6bd26f5,提交c6ec6da,提交f2e2fa8,提交460609c,提交92014b6,提交0ab74e9,提交cb46c40,提交b562a54(2019年8月27日)和提交fe49814(由Denton Liu(Denton-L)。
(由Junio C gitsterHamano合并--在commit 1c6fc94中,2019年9月30日)
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只-”,它不能做一个快进提交,则返回非零-它没有明确地说,如果有一个合并冲突是什么返回如果所有的作品或。