删除了整个Git项目

  • 本文关键字:Git 项目 删除 git
  • 更新时间 :
  • 英文 :


我试图修复我的git repo和.gitignore没有跟踪正确的文件,一切都从远程和本地消失了。这是我在ubuntu服务器上的bash命令的历史记录:

1952  git status
1955  git rm -r --cached .
1957  git commit -m "git fix"
1958  git push
1981  git rm -rf data/
1982  git rm -r --cached data
1983  git clean -xdf
1986  git ls-files
1995  ls

主要的问题是所有的东西都是本地或远程的。谢谢和问候,

有些Git命令是"危险的":它们会从可见文件(工作树)中删除实际文件。他们不只是用一些狡猾的方式隐藏它们;他们只是把它们移走,就好像它们从未存在过一样。您选择使用其中两个命令:git cleangit rm

所以,如果你使用这些命令,你当然可以删除文件,这样他们就永远无法恢复。

然而,Git的工作是保存工作树的早期状态。因此,如果您提交了包含这些文件的任何状态的任何提交,那么这些状态将保留在这些提交中。所以你所要做的就是其中一个或两个:

  • 返回到包含文件的较早提交

  • 从包含它的早期提交中提取单个文件

因为在你刚才做的提交之前,一切都很好,你可以返回到那个提交,只需输入

git checkout @~

如果你对你所看到的非常满意,那么你也会想要通过重置你的分支来摆脱分离的头部模式:

git reset HEAD

但是如果在你的工作树中有其他文件从未被提交,那么这不关Git的事,也不是Git的错:你是使用非常危险的词语cleanrm的人,所以无论你做了什么破坏,你都是在伤害你自己。Git只存储提交;这是它所知道的,也是它所关心的。

那么这里的教训是什么呢?是"永远不要下危险的命令"吗?一点也不!给出任何你喜欢的命令,但是首先你需要安全。要保存一个文件(指处于特定状态的文件),请提交它——并且在开始发出危险命令之前执行。当您发出危险的命令时,为了冒丢失文件的风险,请不要提交它。就这么简单。

最新更新