Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过哈希将无法访问的git commit添加到stash_Git_Git Stash - Fatal编程技术网

如何通过哈希将无法访问的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添加了一些文件,而没有添加其他文件,那么实际上您将有两个“提交”作为隐藏的一部分。我的快速修复将把索引部分和工作目录部分变成两个不同的存储。