我正在用 Python 创建提交后脚本并使用子进程调用 git 命令。
在我的脚本中,我想在运行某些命令之前存储所有更改,然后将它们 pop 。问题是,如果没有任何东西可以存储,stash pop 会返回一个非零错误代码,从而导致 subprocess.check_output() 中出现异常。我知道如何忽略错误返回码,但我不想这样做。
所以我一直在想。有什么方法可以获取当前 stash 的元素数量吗?我知道有一个命令“git stash list”,但是是否有更适合我的需要的东西或一些简单安全的方法来解析 git stash list 的输出?
也感谢解决此问题的其他方法。
最佳答案
不要那样做!
假设 git stash save
没有保存任何内容,但是 已经有一些项目在存储中。然后,当你全部完成后,你 pop 最近的存储,不是你创建的。
你刚刚对用户做了什么?
在 shell 脚本代码中执行此操作的一种方法是在 git stash save
之前和之后检查 git rev-parse refs/stash
的结果。如果它发生变化(从失败到某事,或从某事到其他事),您就创建了一个新的存储,然后您可以在完成后将其 pop 。
较新版本的 Git 有 git stash create
,它像往常一样创建提交对,但不会将它们放入 refs/stash
引用中。如果没有要保存的内容,git stash create
什么也不做,什么也不输出。这是处理该问题的更好方法,但它依赖于 Git 版本。
关于python - 如果有任何东西要 pop ,只调用 'git stash pop',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776447/