使用 git -r rm 后如何恢复我的 git 存储库
How do i restore my git repository after using git -r rm
我正在研究我的存储库,在修改了我使用的一些文件之后:
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 .
因为我认为这会删除所有 'deleted' 文件
然而,这删除了我存储库中的所有内容
然后我做了:
git reset HEAD .
之后我做了 git 日志并找到了我最初在这个 post 中所做的提交的提交代码。这只是让我回到那个承诺之前。
我want/need是在第一次提交后取回所有文件'add and modify file and file2'
从这里可以吗?我不想再玩它了,因为我不想把它搞得更糟!谢谢
从 git 日志中,检查您要滚入的正确提交 ID(检查时间或提交次数以验证):
然后使用:
git reset --hard <tag/branch/commit id>
tl;博士
您使用 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
您可以在优秀的博客 post Reset Demystified.
中阅读有关 git reset
工作原理的更多信息
我正在研究我的存储库,在修改了我使用的一些文件之后:
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 .
因为我认为这会删除所有 'deleted' 文件 然而,这删除了我存储库中的所有内容
然后我做了:
git reset HEAD .
之后我做了 git 日志并找到了我最初在这个 post 中所做的提交的提交代码。这只是让我回到那个承诺之前。
我want/need是在第一次提交后取回所有文件'add and modify file and file2'
从这里可以吗?我不想再玩它了,因为我不想把它搞得更糟!谢谢
从 git 日志中,检查您要滚入的正确提交 ID(检查时间或提交次数以验证):
然后使用:
git reset --hard <tag/branch/commit id>
tl;博士
您使用 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
您可以在优秀的博客 post Reset Demystified.
中阅读有关git reset
工作原理的更多信息