撤消 git 重置还没有任何提交
Undo git reset without any commits yet
正如我所想,我最近想更新远程 git 存储库中的代码。我没有意识到它甚至还没有承诺。我确实创建了一些错误,所以我想将分支重置为之前的状态。
如你所料,我使用了git reset --hard
。
好吧,从那以后一切(整个项目)都消失了;当然 .gitignore
files/folders 除外。我一直在想,有没有办法取消它?
我所做的唯一步骤:
git add .
# Here I realized there is a bug in what I did
# I thought myself it would be better to undo that as it wasn't even something needed
git reset --hard
此外,我想指出它可能不是这里任何问题的重复,因为其他人之前已经提交了一些问题。这是全新的存储库,已经 "reset hard"。
您可以在添加文件的状态下恢复文件,但没有文件名。使用 git fsck
你会得到一个没有被任何提交引用的文件列表。
$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (1/1), done.
dangling blob c7c49b553f1b8c3c8f7955780e5dfdb934ce26db
dangling tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
dangling blob 4f92ab465171608a2c713f2f5439143df2c8afc9
dangling blob 9c1216eb500c0fc2c55c263a9cf221f282c3cd7b
然后可以使用git cat-file
获取文件内容:
for blob in `git fsck | grep 'dangling blob' | cut -d\ -f3` ; do git cat-file -p $blob > $blob ; done
或者你也可以使用git fsck --lost-found
,它将所有悬挂对象放入.git/lost-found/
正如我所想,我最近想更新远程 git 存储库中的代码。我没有意识到它甚至还没有承诺。我确实创建了一些错误,所以我想将分支重置为之前的状态。
如你所料,我使用了git reset --hard
。
好吧,从那以后一切(整个项目)都消失了;当然 .gitignore
files/folders 除外。我一直在想,有没有办法取消它?
我所做的唯一步骤:
git add .
# Here I realized there is a bug in what I did
# I thought myself it would be better to undo that as it wasn't even something needed
git reset --hard
此外,我想指出它可能不是这里任何问题的重复,因为其他人之前已经提交了一些问题。这是全新的存储库,已经 "reset hard"。
您可以在添加文件的状态下恢复文件,但没有文件名。使用 git fsck
你会得到一个没有被任何提交引用的文件列表。
$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (1/1), done.
dangling blob c7c49b553f1b8c3c8f7955780e5dfdb934ce26db
dangling tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
dangling blob 4f92ab465171608a2c713f2f5439143df2c8afc9
dangling blob 9c1216eb500c0fc2c55c263a9cf221f282c3cd7b
然后可以使用git cat-file
获取文件内容:
for blob in `git fsck | grep 'dangling blob' | cut -d\ -f3` ; do git cat-file -p $blob > $blob ; done
或者你也可以使用git fsck --lost-found
,它将所有悬挂对象放入.git/lost-found/