`git rebase --autostash` 创建的临时存储条目在哪里?

Where is the temporary stash entry created by `git rebase --autostash`?

我习惯了运行git rebase --autostash。由于多种原因(冲突、版本等),我可能会在 rebase 期间被打断。我希望在 git stash list 的输出中看到自动存储的内容。但事实并非如此。临时存储条目位于何处?怎么看?

在进行变基时,自动存储存储在:.git/rebase-merge/autostash

由于此文件存储在 .git/ 下,并且是一个有效的参考文件,您可以使用 rebase-merge/autostash 作为指向自动存储的名称:

git log --oneline --graph rebase-merge/autostash

# you can also use it with 'git stash show' or 'git stash apply' :
git stash show rebase-merge/autostash
git stash apply rebase-merge/autostash

您也可以通过手动调用 git update-ref refs/stash :

将其“插入”到常规存储中
git update-ref -m "autostash" refs/stash rebase-merge/autostash

注意 :在阅读您的问题之前,我还认为自动存储是常规存储,我只是通过检查 .git/rebase-merge/ 的内容发现了上述技巧.

上面的 hack 目前有效(git 版本 2.31),我认为您不应该将它们视为坚如磐石、永远稳定的功能——例如 .git/rebase-merge/ 目录不是文档的一部分。


显然,如果您从终端 运行 git rebase,您还可以在命令的输出中看到自动存储的哈希值:

$ git rebase -i master 
Created autostash: 2acfb51
...