gpt4 book ai didi

git - git stash create 和 git stash store 的目的是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:27:36 28 4
gpt4 key购买 nike

来自 git-scm 处的文档,有两个 git stash 命令提到与脚本相关,但不是一般用途:

create

Create a stash (which is a regular commit object) and return its object name, without storing it anywhere in the ref namespace. This is intended to be useful for scripts. It is probably not the command you want to use; see "save" above.

store

Store a given stash created via git stash create (which is a dangling merge commit) in the stash ref, updating the stash reflog. This is intended to be useful for scripts. It is probably not the command you want to use; see "save" above.

假设我们正在考虑自动化脚本的上下文,git stash creategit stash store 比通常的 git stash save 和 friend ?

最佳答案

不幸的是,Andrew 上面展示的很好的例子并不适用于所有情况,因为:

  • 如果有本地更改,则git stash create 将创建一个未引用的提交,但实际上不会清除本地更改。

  • 如果没有任何本地更改,那么它根本不会创建提交(正如 BlackVegetable 指出的那样)。在这种情况下,我们不应该在最后apply

  • (还有一点:Andrew 忘记保留和使用 create 生成的提交 ID。)

考虑到这一点,在我看来用法应该是这样的:

# 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 放在底部,那就简单多了。

我宁愿错了。请纠正我!

关于git - git stash create 和 git stash store 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28635989/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com