更改Git藏匿消息

Cha*_*esB 69 git git-stash

我有一个为未来保存的藏匿处,我想给出一个有意义的名字.虽然可以将消息作为参数传递给git stash save,但是有没有办法将消息添加到现有的存储中?

yib*_*ibe 57

您可以直接编辑存储的消息.git/logs/refs/stash.

我知道这可能不太理想,但无论如何都应该有效.

  • 这实际上并没有改变提交消息(参见`git show stash`或`git log --all`),只改变了stash reflog中的条目. (6认同)
  • 这似乎工作的事实是非常幸运的:消息也存储在提交消息中(存储在内部表示为提交),你当然不会改变它. (5认同)

小智 21

是的,有办法,你可以试试这个:

git stash store -m "your descriptive message here" stash@{1}

这将创建一个stash@{0}以上述消息命名的新Stash .
这个Stash和stash@{1}.

然后你可以删除上面的旧藏匿@ {1}:

git stash drop stash@{2} #sstash @ {1}已成为stash @ {2},因为已创建新的存储.

注意:您不能使用存储@ {0}执行此操作:git stash store -m "message here" stash@{0}将不执行任何操作.

  • 为什么它不能与`stash {0}`一起使用? (4认同)
  • `git stash store` 旨在对 `git stash create` 的提交引用输出进行操作,即 `create` 创建存储提交,`store` 将其写入到 `.git/logs/refs/stash` (即`/refs/stash`)。通过将“store”传递给现有的提交,我相信它本质上是在做与接受的答案相同的事情,即仅修改“.git/logs/refs/stash”——底层存储提交与以前完全相同。这可能也解释了为什么它不适用于“stash@{0}”——“refs/stash”的头部不能也在“refs/stash”的引用日志中(或类似的东西)。 (3认同)
  • 这应该是公认的答案 (2认同)

man*_*lds 14

不是没有弹出并再次保存.

  • @RobertDailey好吧,如果你弹出藏匿处并且存在合并冲突,那么你自己就会陷入困境. (3认同)
  • 如果您的存储器跨越各个分支并不那么简单,因为"弹出并再次保存"会将存储的提交应用于当前分支(可能在合并时失败).如果你发现自己有一长串的腰带,你可能需要更好地利用分支. (2认同)

krl*_*mlr 11

(扩展manojlds的答案.)附加消息最简单的方法就是用一个消息来解除隐藏和重新存储,有一个git stash branch命令可以帮助你做到这一点.

git stash branch tmp-add-stash-message
git stash save "Your stash message"
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是这个藏匿现在似乎来自tmp-add-stash-message分支.之后,您可以签出另一个分支并删除此临时分支.

当然,这假设您的工作副本是干净的,否则您可以存储当前的更改:-)