从文档中git-scm http://git-scm.com/docs/git-stash,有两个 git stash 命令提到了与脚本编写的相关性,但不是一般用途:
create
创建一个存储(这是一个常规提交对象)并返回其对象名称,而不将其存储在 ref 命名空间中的任何位置。这对于脚本很有用。这可能不是您想要使用的命令;请参阅上面的“保存”。
store
将通过 git stash create 创建的给定存储(这是一个悬空合并提交)存储在存储引用中,更新存储引用日志。这对于脚本很有用。这可能不是您想要使用的命令;请参阅上面的“保存”。
假设我们正在考虑自动化脚本的上下文,有什么优点git stash create
and git stash store
给我平常的git stash save
和朋友?
不幸的是,安德鲁上面展示的好例子并不适用于所有情况,因为:
如果有are然后进行局部更改git stash create
将创建一个未引用的提交,但它实际上不会清除本地更改。
如果有are not任何本地更改,那么它根本不会创建提交(正如 BlackVegetable 指出的那样)。在这种情况下我们不应该apply
在最后。
(还有一点:Andrew 忘记保留和使用由create
.)
考虑到这一点,在我看来,用法应该是这样的:
# Save the local changes, keep a reference to them, and clear them
stashed_commit="$(git stash create)"
git reset --hard
# Do your thing
git fetch
git rebase
# If there were local changes, then restore them
if [ -n "${stashed_commit}" ]
then git stash apply "${stashed_commit}"
fi
至少可以说不方便!
唉。如果我可以的话那就简单多了git stash save --allow-empty
在顶部,并且git stash pop
在底部。
我很乐意犯错。请纠正我!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)