Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/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筛选器分支后是否可以检索存储?_Git_Git Stash_Git Filter Branch - Fatal编程技术网

运行git筛选器分支后是否可以检索存储?

运行git筛选器分支后是否可以检索存储?,git,git-stash,git-filter-branch,Git,Git Stash,Git Filter Branch,我运行了git-filter分支--env-filter'git\u COMMITTER\u DATE=$git\u AUTHOR\u DATE'来修复我重新设置基础后的提交日期。然而,我不知道我的藏品会丢失 我尝试了以下方法: 运行git reflog--all,检查它显示的最早提交(c9e4e26 HEAD@{37}:rebase(start):checkout e3536c9^)并运行git stash list 运行git fsck,检查每个无法访问/挂起的blob并提交并运行git隐

我运行了
git-filter分支--env-filter'git\u COMMITTER\u DATE=$git\u AUTHOR\u DATE'
来修复我重新设置基础后的提交日期。然而,我不知道我的藏品会丢失

我尝试了以下方法:

  • 运行
    git reflog--all
    ,检查它显示的最早提交(
    c9e4e26 HEAD@{37}:rebase(start):checkout e3536c9^
    )并运行
    git stash list
  • 运行
    git fsck
    ,检查每个无法访问/挂起的blob并提交并运行
    git隐藏列表

是否有办法取回该藏品?

您现有的藏品并没有完全丢失。嗯,很难找到,所以从这个意义上说,它是“丢失的”。发生的情况是,
git过滤器分支
损坏了它。git stash所做的是提交两次,有时是三次,其中关键的一次看起来像是合并提交。大多数Git命令将其视为合并。这包括
git过滤器分支
。这可能会损坏隐藏组,因为
git stash
本身需要这些奇怪的提交块,它们看起来像合并,但不能被视为合并

由于Git中的任何内容实际上都不能更改任何现有的提交,所以filter branch所做的就是将隐藏内容复制到新的“改进”(但实际上是损坏的)提交中。名称
stash
现在指的是这些新的和未改进的(deprovered?deprovered?)提交

如果您没有删除所有
refs/original
空格:

git update-ref refs/stash refs/original/refs/stash
refs/stash
恢复到筛选器分支操作之前的状态。(这假设一次通过
过滤器分支
;每次额外通过都需要
-f
或删除前面的
参考/original/
空格,这两个空格中的任何一个都会破坏您想要返回此处的值。)

如果您使用的是stash“stack”,它位于reflog中,用于
refs/stash
本身。它应该没有损坏,除了最后一个条目,
stash@{1}
,应该保存过滤器分支操作之前的
refs/stash
旧值。如果您已经删除了
refs/original
名称,那么这将提供另一种恢复方法。如果您运行了多个
git过滤器分支
,您可能需要比此处的
1
更高的数字

如果所有其他操作都失败,则可以使用中描述的
git fsck
方法,该方法位于恢复错误地清除/丢弃的隐藏项下的末尾,但非常痛苦

(顺便说一句,这在这一点上并没有帮助。这是我建议大多数时候避免
git隐藏的原因之一。因为它所做的只是进行提交,只需进行正常提交。git的其余部分将很好地处理这些正常提交。)