git 如何“更新”藏匿处?

yftpprvb  于 2023-01-01  发布在  Git
关注(0)|答案(2)|浏览(122)

在我目前的分支机构,我有几个藏匿处:

  • 第一个月
  • stash@{1}
  • stash@{2}

1.如果应用stash@{0}

$ git stash apply stash{0}

1.修改此藏匿处
1.我想保存对当前存储stash@{0}的更改
我不想创建第四个藏匿点,我只想更新第一个藏匿点。
有人能告诉我怎么做吗?我正在看手册页......也许我忽略了什么。

ql3eal8s

ql3eal8s1#

你可以把你的工作树藏起来,然后扔掉你不需要的旧树。

git stash apply
# Make changes
git stash
git stash drop stash@{1}

或者,您可以弹出而不是应用,这将同时删除隐藏的内容:

git stash pop 
# make changes
git stash

另一种选择,如果你已经做了你想做的更改,然后才意识到你想合并的变化到顶部的储藏:

# make changes
git add <all files>
git stash pop # or apply
git rm --cached <files that you want to merge>
git stash --keep-index
qvtsj1bj

qvtsj1bj2#

我也需要这么做。

git stash的主要用途

我保留了一组我喜欢经常应用(而不是弹出)的stash。例如,我有一个stash应用了某个配置,这与签入repo的配置不同。在获得最新版本后,我将在检查stash列表后运行类似git stash apply 0的代码。
"我刚才遇到的问题"
当应用一个隐藏时,你可能会遇到合并冲突。当这种情况发生时,你被迫修复合并冲突。这显然是你不想在每次应用隐藏时都做的事情。

决议

这显然不能保持索引不变,除非你要应用的项在栈顶,但它对我很有效,我只关心我在stash中有这个项,而不是它相对于其他stash项的位置。

# Find the item in the stash I'm trying to apply, based on the description.
git stash list

# Apply the stashed item, based on its index.
git stash apply 0

# Merge conflicts found... correct them.
git mergetool

# Drop the stash by whatever index was found.
# This is necessary since doing a git stash pop doesn't remove a stash that has merge-conflicts.
# In that scenario, it says "The stash entry is kept in case you need it again."
git stash drop 0

# Resave the stash with the merge-conflicts taken care of.
git stash save "Some message for identifying the stash in the list"

相关问题