我的工作流程的一部分涉及很多工作:
我试图编写一个脚本来一次完成所有这些事情,所以我可以从终端上调用它。
#!/bin/bash
# First stash our local changes
git stash
# Then git pull to update our repo
git pull
# Pop the stash
git stash pop
# Launch mergetool if necessary
git mergetool
我遇到的问题是,如果我不小心运行了此代码,并且没有对存储进行任何更改,则
git stash pop
将应用一些(通常是超旧的)存储。我想要做的是仅在我确实藏有东西之前才运行git stash pop
。有没有办法做到这一点?
最佳答案
阅读关于您为什么要做什么的解释,我可能会寻求完全不同的方法。首先,我要获取要使用的 Remote :
git fetch <remote> (e.g. git fetch origin)
然后,我将根据该远程服务器的特定分支进行重新设置:
git rebase <remote>/<branch> (e.g. git rebase origin/master)
这样可以 merge 您的更改,您仍然可以解决所有冲突。
如果您不喜欢这种方法,则可能要使用带有--no-commit标志的git pull来代替:
git pull --no-commit
这样, merge 后将不会执行自动提交。
关于只有在成功 stash 之前,Git才会藏起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114700/