更改Git Stash消息

93

我有一些储藏品,为了将来我想给它们取一个有意义的名称。虽然可以通过传递消息作为参数到git stash save来保存,但是是否有一种方法可以向现有的储藏品中添加消息呢?


1
我认识到这个问题比被标记为重复的问题要旧,但那个问题有更好的答案。 - Michael
5个回答

85
您可以直接编辑存储在.git/logs/refs/stash中的消息。
我知道这可能不是最佳选择,但应该仍然有效。

6
似乎这种方法奏效是非常幸运的:因为储存在提交信息中(Stash在内部被表示为提交),所以你不会改变它。 - Cascabel
11
这实际上并不改变提交信息(请参见git show stashgit log --all),只会更改隐藏修补的 reflog 条目。 - Zaz

38

是的,有一种方法,您可以尝试这个:

git stash store -m "你的描述性信息" stash@{1}

这将创建一个名为stash@{0}的新存储,并带有上述消息。
此存储与stash@{1}相同。

然后您可以使用以下命令删除上面的旧stash@{1}:

git stash drop stash@{2} # 因为已经创建了一个新的stash,所以stash@{1}变成了stash@{2}。

注意:您无法对stash@{0}执行此操作:git stash store -m "消息在这里" stash@{0}将不起作用。


6
为什么 stash{0} 不能使用? - CharlesB
其实我不知道,我尝试过但没有成功。所以我猜测:如果这个调用是 stash@{1},那么它会将 stash@{1} 的副本带到堆栈顶部,因此当用户调用 git stash apply 时,他会得到不同的结果。如果这个调用是 stash@{0},那么后续对 git stash apply 的调用会产生相同的结果。 - Ryan Le
1
有一个命令是 git stash save "你的信息" - scrat.squirrel
2
这应该被接受为答案。 - TxH
3
git stash store 的作用是对 git stash create 命令的提交引用进行操作,即 create 创建了存储提交,store 将其写入 .git/logs/refs/stash(即 /refs/stash 的 reflog)。通过向 store 传递一个现有的提交,我认为它本质上正在执行与已接受答案相同的操作,即修改 .git/logs/refs/stash -- 底层的存储提交保持与之前完全相同。这可能也解释了为什么它不适用于 stash@{0} -- refs/stash 的头部不能同时存在于 refs/stash 的 reflog 中(或类似的情况)。 - Raman

21

(扩展manojlds的答案。)最简单的附加消息的方法确实是使用取消暂存和重新暂存,同时带上一条消息,有一个 git stash branch 命令可以帮助您完成此操作。

git stash branch tmp-add-stash-message
git stash save "Your stash message"

唯一的缺点是这个隐藏文件现在似乎来自于 tmp-add-stash-message 分支。之后,您可以切换到另一个分支并删除此临时分支。

当然,这假设您的工作副本是干净的,否则您可以对当前更改进行隐藏操作 :-)


这个答案实际上是正确的。 - scrat.squirrel

16

需要弹出并再次保存才能完成。


3
如果你的存储是分布在不同的分支上,“弹出并再次保存”将会将存储的提交应用到当前分支上(这可能在合并时失败),所以情况并不那么简单。如果你发现自己有一长串的存储,你可能需要更好地利用分支。 - i3ensays
3
如果你打开了存储库并且出现了合并冲突,那么你会非常慌张。 - David T.
1
有一个命令是 git stash save "你的信息" - scrat.squirrel

3

以下是一些命令,可以帮助您像@manojlds建议的那样弹出并保存:

git stash #save what you have uncommitted to stash@{0}
git stash pop stash@{1} #or another <stash> you want to change the message on
# only if necessary, fix up any conflicts, git reset, and git stash drop stash@{1}
git stash save "new message"
git pop stash@{1} #get back to where you were if you had uncommitted changes to begin with

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接