【问题标题】:Git removed all filesGit 删除所有文件
【发布时间】:2018-12-02 06:28:14
【问题描述】:

我刚刚通过应用初始化了一个存储库

git flow init
git remote add origin git@gitlab.com:folder/project.git
git add .

我注意到我需要评论一个文件夹,然后使用

git reset --hard

并尝试将文件夹添加到.gitignore,但是所有未跟踪的文件夹都已删除,之后我使用了

git clean -f -d

现在我一无所有,我失去了整个项目,我不知道如何恢复它。

【问题讨论】:

  • 您是否在使用任何 IDE,例如 Eclipse、Visual Studio 或其他什么?也许IDE在本地历史上有一些备份。看到这个:stackoverflow.com/questions/6267180/can-i-undo-a-git-clean-fdx
  • 谢谢!,我知道这不是解决方案,我删除了我自己的项目
  • reset--hard 听起来都很危险......我总是检查文档,仍然在使用 GIT 多年后

标签: git git-flow git-reset


【解决方案1】:

您在问为什么您的所有项目都消失了,所以让我们分解一下您运行的 git 命令:

  1. git flow init 大致相当于 git init 并使用从 master 派生的开发分支提交一个空的“初始提交”。
  2. git remote add ... 将您的 GitLab 遥控器添加为本地遥控器,以便您可以使用它进行推/拉。
  3. git add . 将本地目录 . 中的所有内容添加到您的暂存区,它们已准备好提交。到目前为止一切顺利!
  4. git reset --hard 是您遇到麻烦的地方。 The git documentation 表明 --hard 重置索引和工作树,因此对跟踪文件的任何更改都将被丢弃。这意味着您刚刚添加的所有内容都会恢复到上次提交时的状态,即一次空提交,因此您的文件已被删除。
  5. git clean -f -d 只是强行删除未跟踪的目录,我希望您在硬重置后没有这些目录。

以后,我建议阅读git reset 的文档,以便了解为什么它与--hard 一起工作。作为记录,你想在这里运行的可能只是 git reset 没有任何参数,这将取消你所有的暂存更改,但不会删除任何代码。然后,您的其他命令(例如编辑 .gitignore)的行为将与您预期的一样。

【讨论】:

  • 同时提交或存储未跟踪的代码,即使代码是临时的,也将有助于撤消由重置引起的删除。
猜你喜欢
  • 2017-11-27
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多