Git隐藏推送,无修改

时间:2019-01-23 18:18:56

标签: git gitpython

通常我跑步时:

git stash push --all

如果我没有任何修改,则不会在存储库中推送任何内容。即使在这种情况下,也可以强制执行一次推送,以便git stash push --all && git stash pop始终给出身份吗?

我之所以问是因为在某些脚本中我想stash push,做一些事情,然后stash pop,并且如果隐藏推送不创建新的隐藏,则隐藏弹出可能会弹出,并且不相关的藏匿处。另一个解决方案是从GitPython中检测到没有隐藏操作(我可以通过比较两个连续的repo.git.stash("list")的输出来表示),但是这也会使代码复杂一些。

谢谢!

2 个答案:

答案 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:到目前为止,它似乎仍然有效,但是也许我错过了一些在某些情况下可能很重要的重要选项,所以请告诉我是否是这种情况!

相关问题