使用git -r rm后如何还原我的git存储库

婚外情

我正在使用我的存储库,修改了一些我使用过的文件后:

git add .

输出为:

 Changes to be commited:
      new file:   path/to/file.txt
      modified:   path/to/file2.txt

 Changes not staged for commit:
      deleted:     path/to/file/file3.txt

所以我用了

 git commit -m 'add and modify file and file2'

这给出了输出:

 2 files changed, x insertions, x deletions

所以我做了git status这给出了输出:

 Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory

           deleted:
    no changes added to commit (use "git add" and or "git commit -a")

所以在这一点上我做到了:

git rm -r . 

因为我认为这将删除所有“已删除”文件,但是这删除了我存储库中的所有内容

然后我做了:

git reset HEAD .

之后,我进行了git log并找到了我最初在本文中所做的提交的提交代码。这只是使我回到了以前的那个提交。

我想要/需要的是在第一次提交“添加并修改文件和文件2”后取回所有文件

从这里可以吗?我不想再玩了,因为我不想进一步搞乱它!谢谢

恩里科·坎皮多里奥(Enrico Campidoglio)

tl; dr

您正在使用正确的路径git reset HEAD来还原文件。只要您不提交已删除的文件,就可以简单地添加--hard选项以将文件也还原到工作目录中:

git reset --hard HEAD

三种模式 git reset

git reset命令能够修改存储库中的三项内容:

  • HEAD参考
  • 索引
  • 工作目录

要修改的内容取决于您选择的操作模式:

  • --soft仅修改HEAD参考
  • --mixed修改HEAD参考索引
  • --hard修改HEAD参考,索引工作目录

如果在git reset未指定这三个参数之一的情况下调用,则默认值为--mixed这意味着Git将移动HEAD参考并更新索引,但是将保持您的工作目录不变。

在您的情况下,您想要还原工作目录中的文件,就像在最新提交中一样(由引用HEAD),因此您需要传递以下--hard选项:

git reset --hard HEAD

您可以git reset在出色的博客文章《重置揭秘》中阅读更多有关其工作原理的信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章