如何通过哈希将无法访问的git commit添加到stash
我有大量无法访问的提交的散列(愚蠢的我在键入如何通过哈希将无法访问的git commit添加到stash,git,git-stash,Git,Git Stash,我有大量无法访问的提交的散列(愚蠢的我在键入git stash时试图clear控制台) 我在git fsck上乱搞了一番,得到了一堆这样的哈希值 有没有简单的方法将这些散列返回到git存储库中?快速回答: git fsck | grep commit | cut -d' ' -f3 | while read hash; do git rev-parse --verify --quiet $hash^2 && echo $hash; done | xargs git
git stash
时试图clear
控制台)
我在git fsck上乱搞了一番,得到了一堆这样的哈希值
有没有简单的方法将这些散列返回到git存储库中?快速回答:
git fsck | grep commit | cut -d' ' -f3 |
while read hash; do git rev-parse --verify --quiet $hash^2 && echo $hash; done |
xargs git log --grep WIP --pretty=oneline |
while read hash wip on branch commit junk; do
git checkout $hash; git reset --soft $commit; git stash; done
请注意,这将把存储的索引和工作树部分分为不同的存储。你能举一个你保存的输出的例子吗?一个仓库有多个零件,您可能没有所有零件的SHA
编辑以包含您的样本隐藏发现脚本,以从正确的相对基复制隐藏。您的标题为“不可读”,但您的描述为“不可访问”,是哪个?不可访问。我的错。仍然没有直接输入>>我在读取HASH时使用了
git fsck | grep commit | cut-d'-f3 |在master:commit message上输入了一大串HASH-WIP
;dogit rev parse--verify--quiet$hash^2&&echo$hash;完成| xargs git log--grep WIP--pretty=oneline
,然后通过管道将其传输到awk'{print$1}'
,仅用于散列——我知道我假设所有隐藏的提交在提交中都有“WIP”message@arcyqwerty:然后我的答案将重新连接所有位并将它们放入存储库,当然,正如我所说,如果有多行输出具有相同的注释(这意味着索引和工作目录的存储方式不同),那么它们将形成两个存储。如果这件事发生在你身上或者你在乎的话,请告诉我。我可以尝试进行更复杂的重新连接据我所知,它们只是使用git stash
命令隐藏起来的。也没什么fancy@arcyqwerty:问题不是您运行了什么命令,而是您运行该命令时回购的状态。如果您让git add添加了一些文件,而没有添加其他文件,那么实际上您将有两个“提交”作为隐藏的一部分。我的快速修复将把索引部分和工作目录部分变成两个不同的存储。