当前位置:  开发笔记 > 编程语言 > 正文

如何在没有错误的情况下git提交任何内容?

如何解决《如何在没有错误的情况下git提交任何内容?》经验,为你挑选了3个好方法。

我正在尝试编写一个可以执行的结构脚本git commit; 但是,如果没有提交,git退出状态为1.部署脚本将其视为不成功,并退出.我确实想要检测实际的失败提交,所以我不能仅仅给织物一个忽略git commit失败的问题.如何允许忽略空提交失败,以便部署可以继续,但仍然捕获真正提交失败时导致的错误?

def commit():
    local("git add -p && git commit")

Tobi.. 120

通过检查git diff的退出代码事先赶上这个条件?

例如(在shell中):

git add -A
git diff-index --quiet HEAD || git commit -m 'bla'

编辑:修正git diff命令根据霍尔格的评论.



1> Tobi..:

通过检查git diff的退出代码事先赶上这个条件?

例如(在shell中):

git add -A
git diff-index --quiet HEAD || git commit -m 'bla'

编辑:修正git diff命令根据霍尔格的评论.


请注意,`git diff`是一个不应该用于编写脚本的"瓷器"命令.你最想要的是`git diff-index --quiet HEAD || git commit -m'bla'`.另请参阅[此答案](http://stackoverflow.com/a/2659808/659002).

2> Sven Marnach..:

git commit手册页:

--allow-empty
    Usually recording a commit that has the exact same tree as its
    sole parent commit is a mistake, and the command prevents you
    from making such a commit. This option bypassesthe safety, and
    is primarily for use by foreign SCM interface scripts.


这实际上会创建一个提交.
@ThiefMaster:对.我不能告诉OP这是否是一个问题.我想如果你使用的是自动提交,你无论如何都不关心你的历史.
@manojlds:这怎么不是问题的答案?
@manojlds:"当然OP不想创建一个空提交." 我今天把水晶球留在了家里,所以我不知道.虽然错过了`-p`,但仍然如此
这不是问题的答案

3> Tyler Eaves..:
with settings(warn_only=True):
  run('git commit ...')

这会导致结构忽略失败.具有不创建空提交的优点.

您可以将其包装在一个额外的层中with hide('warnings'):以完全抑制输出,否则您将在结构输出中获得提交失败的注释(但fabfile继续执行).


OP写道:"我确实希望检测*实际*失败​​ - 提交"; 此代码将隐藏*all*failure-to-commit.
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有