Git:以编程方式检查是否有任何事件发生

对于我正在写的Git脚本,我希望有一个编程方法来检查是否有任何事情在进行。 即如果任何事情都是上演的,我想要一个积极的结果,如果什么都没有上演的话,我就是消极的。

奖励积分:以编程方式检查工作树中是否有新的东西可以上演。


您正在寻找:

git diff --cached --quiet

(或者如果你仍然想要输出,用--exit-code替换--quiet


git status的短格式输出(也在helppage git status --help解释)给出了可以以编程方式使用的输出。 从git status --help helppage(在“OUTPUT”部分页面底部的某处,为我的git 2.8.1.windows.1版本):

在短格式中,每条路径的状态显示为
XY PATH1 -> PATH2
其中PATH1是HEAD中的路径,并且仅当PATH1对应于索引/工作树中的不同路径(即文件被重命名)时才显示“ - > PATH2”部分。 XY是一个双字母状态码。

根据相同的理由:

对于具有合并冲突的路径,X和Y显示合并每一侧的修改状态。 对于没有合并冲突的路径,X显示索引的状态,Y显示工作树的状态。 对于未跟踪的路径, XY?? 。 其他状态代码可以解释如下:
' ' =未修改
M =修改
A =已添加
D =删除
R =重命名
C =复制
U =更新但未被合并
忽略的文件没有列出,除非--ignored选项有效,在这种情况下XY!!

所有关于XY值的信息都可以在这里找到。 短格式是通过使用git status -s获得的。 所以

git status -s | grep "^[MADRCU]"

应该给你迄今为止已经上演的所有参赛作品。 您可以将-c标志添加到grep来计算行数,而不是打印它们。

奖励:在工作树中尚未上演的任何新内容(仍未追踪)应该被发现:

git status -s | grep "^??"

希望这可以帮助。

祝你好运!

链接地址: http://www.djcxy.com/p/50885.html

上一篇: Git: Check programmatically if anything is staged

下一篇: Cannot see changes staged for commit using git diff