Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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 checkout-f';获取未提交的更改_Git - Fatal编程技术网

如何撤消';git checkout-f';获取未提交的更改

如何撤消';git checkout-f';获取未提交的更改,git,Git,我无意中键入了git checkout-f,因为我试图恢复已删除的文件,但现在所有未提交的文件都消失了。。。那是一天的工作。。。有办法把它拿回来吗?谢谢。您有跟踪文件修改的备份系统吗?你可以从那里拿回来。否则你就不走运了——更频繁地承诺 这次你大概有机会坐在但丁的地狱之外,但这取决于一个非常重要的步骤 在此之前,您必须在某个时间点运行git add。 否则,你不会玩得很开心 如果有,则可以运行git fsck--lost-found来恢复已删除的任何文件。您将得到的不是确切的文件名,而是一个悬空

我无意中键入了
git checkout-f
,因为我试图恢复已删除的文件,但现在所有未提交的文件都消失了。。。那是一天的工作。。。有办法把它拿回来吗?谢谢。

您有跟踪文件修改的备份系统吗?你可以从那里拿回来。否则你就不走运了——更频繁地承诺

这次你大概有机会坐在但丁的地狱之外,但这取决于一个非常重要的步骤

在此之前,您必须在某个时间点运行git add。 否则,你不会玩得很开心

如果有,则可以运行
git fsck--lost-found
来恢复已删除的任何文件。您将得到的不是确切的文件名,而是一个悬空的commit blob

makoto@LATLON-Undefined:~/Desktop/smoketest$ echo "Goodbye file" > badfile.txt
makoto@LATLON-Undefined:~/Desktop/smoketest$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    badfile.txt

nothing added to commit but untracked files present (use "git add" to track)
makoto@LATLON-Undefined:~/Desktop/smoketest$ git add .
makoto@LATLON-Undefined:~/Desktop/smoketest$ git reset --hard HEAD
HEAD is now at 7124f25 Initial
makoto@LATLON-Undefined:~/Desktop/smoketest$ git status
On branch master
nothing to commit, working directory clean
makoto@LATLON-Undefined:~/Desktop/smoketest$ git fsck --lost-found
Checking object directories: 100% (256/256), done.
dangling blob 4a503984f4847abd45f4d795d1b74c6482164dcb
两个选项:

  • 检查git存储,查看您以前是否存储过这些文件:

    git stash list
    git stash show stash@{0}
    
  • 如果您以前添加/暂存了这些文件,您可以尝试
    git fsck--lost-found
    。Git将把所有悬空的blob保存到
    /Git/lost-found/other
    目录中(尽管它们没有原始文件名)


  • git fsck说了什么?也许这里面有些东西你可以参考。请注意,如果您的文件已暂存但未提交,这将有所帮助;如果它们是未老化的,那么它们几乎丢失了。
    git reflog
    只能提供实际提交的内容。如果更改未提交,则reflog中不会有任何内容;我想到的是git fsck。如果文件是暂存的,那会有帮助。@Makoto花了一段时间,但最后我得到了一堆悬空提交/blob你不需要自己保存悬空的blob,
    --失物招领
    为你保存到
    .git/lost-found/other
    。@wisbucky:记住,我是从另一个网站上引用了这个例子。如果你有其他的方法,那么我鼓励你把它作为一个单独的答案贴在这里。
    git stash list
    git stash show stash@{0}