python - 如果有任何东西要 pop ,只调用 'git stash pop'

标签 python git

我正在用 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/

相关文章:

python - 具有不规则和交替箱的分箱统计

git - Git 中的 "stateful"是如何 rebase 和 merge 的?

python - 如何对目录中的所有文件运行单元测试?

python - Pandas 数据帧对每列的计数值以及新索引中的总和

python - 尝试使用 BeautifulSoup4 从类(class)中获取某些链接

git - 我怎样才能从 git 中删除分离的提交?

git - 更改 git 子模块,并保留更改

重命名/移动修改后的文件后,Git 不跟踪历史记录

git - 在 git 中恢复以前删除的代码(不一定是单个文件或整个文件)

python - Tornado 的几个静态目录