只打电话给git stash pop'如果有什么东西可以流行

时间:2016-08-04 20:02:18

标签: python git

我在Python中创建一个post-commit脚本并使用subprocess调用git命令。

在我的脚本中,我希望在运行某些命令之前隐藏所有更改,然后将它们弹回。问题是如果没有任何东西存储,stash pop返回一个非零错误代码,导致subprocess.check_output()中出现异常。我知道如何忽略错误返回码,但我不想这样做。

所以我一直在想。有没有办法让目前藏匿的物品数量?我知道有一个命令' git stash list',但有什么更适合我的需要或一些简单安全的方法来解析git存储列表的输出?

还要了解解决此问题的其他方法。

2 个答案:

答案 0 :(得分:5)

不要这样做!

假设git stash save没有保存任何内容,但 已经隐藏了一些项目。然后,当您完成所有操作后,您会弹出最新的存储,不是您创建的存储

您刚刚对用户做了什么?

在shell脚本代码中执行此操作的一种方法是在git rev-parse refs/stash之前和之后检查git stash save的结果。如果它更改(从失败到某事,或某事物到其他东西),你就创建了一个新藏匿,然后你可以在完成后弹出。

更新版本的Git有git stash create,它会像往常一样创建提交对,但不会将它们放入refs/stash引用中。如果没有要保存的内容,git stash create什么都不做,什么都不输出。这是处理问题的更好方法,但是依赖于Git版本。

答案 1 :(得分:2)

您只需尝试拨打git stash show stash@{0}即可。如果这成功返回,则存在隐藏的东西。