【问题标题】:How to revert git clean [duplicate]如何恢复 git clean [重复]
【发布时间】:2018-06-22 06:35:57
【问题描述】:

我有一个 git flow 问题。

我在 git 的本地“开发者”分支上编写了代码。然后在工作完成后,我添加了所有更改的文件,然后我将它提交到我的本地分支“开发人员”。然后我想结帐到我的本地“master”分支,将新版本从远程“master”分支拉到,然后将新的远程版本与我的“开发者”合并。

但是由于一些未跟踪的文件,从本地“开发人员”向本地“主”的签出被中止。不幸的是,我使用git clean -f -x -d 清理了我的存储库,这删除了所有文件,甚至是已提交的文件。我认为这只会删除未跟踪的。但是我可以在 git 扩展工具上看到我的提交,但是通过使用 git status 它表明很多文件已被删除。

我知道清理是不可恢复的,但是当我在清理之前做了一个提交时,我是否可以通过恢复到我对本地开发人员所做的最后一次提交以某种方式“忽略”我所做的清理?

希望有可能。

非常感谢。

编辑:我做了提供的事情并且它有效。我在我的旧提交中进行了更改。但不幸的是, git clean 删除了项目所需的一些文件夹。现在缺少一些必需的构建路径。此文件夹是空文件夹,但仍需要项目流程。如何读取我所做的清理删除的这些空文件夹?从 origin/master 拉取无效。那里有可用的文件夹。

问候, alfi92.

【问题讨论】:

  • 你能用git reflog吗?里面有什么有用的吗?
  • 如果你知道开发者分支最后一次成功提交的sha码。只需重置该 sha 代码即可。

标签: git git-branch git-commit git-clean git-untracked


【解决方案1】:

你有几个选择:

  1. git reset --hard <commit-SHA> 这会将您的分支指针移动到<commit-SHA>。使用git add 上演的任何内容都会被丢弃。未暂存的修改文件也会被丢弃。这是你能挥动的最大的锤子。实际上,您已经重新克隆了存储库。
  2. git checkout -- . 这将恢复从当前目录开始找到的所有已修改文件。未使用git rm 标记为删除的已删除文件将被恢复。这将不会从您之前使用git add 暂存的暂存区域中删除内容。如果您只想恢复以前提交的文件,我会从这个开始。

【讨论】:

  • 谢谢。您的第一个选项效果很好。但是现在类路径所需的一些文件夹已经消失,因为那些是空的。你知道如何再次获取这些文件夹吗?
  • 空文件夹不记录在 git 中。例如,您不能“git add”一个空文件夹,然后“git commit”那个。如果您希望“空”文件夹成为存储库的一部分,则该文件夹需要在其中包含某种占位符文件才能添加/提交到您的存储库。
【解决方案2】:

如果您知道开发人员分支中最后一次成功提交的 sha 代码。只需使用该 sha 代码进行重置。这应该重置所有指向旧的成功提交的指针,您将恢复您的文件。

git reset --hard shacode(成功提交的)

【讨论】:

    猜你喜欢
    • 2014-11-01
    • 2022-11-23
    • 2019-10-05
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2018-11-10
    • 2016-03-08
    相关资源
    最近更新 更多