通常我跑步时:
git stash push --all
如果我没有任何修改,则不会在存储库中推送任何内容。即使在这种情况下,也可以强制执行一次推送,以便git stash push --all && git stash pop
始终给出身份吗?
我之所以问是因为在某些脚本中我想stash push
,做一些事情,然后stash pop
,并且如果隐藏推送不创建新的隐藏,则隐藏弹出可能会弹出,并且不相关的藏匿处。另一个解决方案是从GitPython中检测到没有隐藏操作(我可以通过比较两个连续的repo.git.stash("list")
的输出来表示),但是这也会使代码复杂一些。
谢谢!
答案 0 :(得分:0)
git stash
的一般用法是存储您不想提交的更改数据,例如,当您交换到另一个分支时,稍后再返回此更改。因此,如果您没有任何未提交的更改,则如何存储某些内容?
我认为您的行为变化有问题。获得相同结果的更简单方法是将存储库/分支状态重置为实际提交,然后隐藏弹出。我的意思是我会推荐你这样的东西。 git stash
->做一些事情-> git reset --hard
(这会丢弃所有本地更改,但不会清除存储),然后使用git pop
来获取您的状态,然后再“做一些事情”。
答案 1 :(得分:0)
除了torek的评论,即使这不能解决我最初的确切问题,也足以解决我的问题:我想指出GitPython repo.is_dirty(untracked_files=True)
的功能,该功能可用于检查如果您有任何事stash push --all
。这样,我可以保存此值以备后用,如果以前没有stash pop
,就不用stash push --all
。
NB:到目前为止,它似乎仍然有效,但是也许我错过了一些在某些情况下可能很重要的重要选项,所以请告诉我是否是这种情况!