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