2

我在 git 的目录中有一堆没有被跟踪的文件。我犯了一个错误,git add .那就是提交并推动更改。我怎样才能回到在该提交之前未跟踪的文件再次未跟踪但仍在目录中的位置(git reset --hard删除了所有文件,对我不利,而不是再次取消跟踪它们)。我在不同位置有许多文件需要不被跟踪,所以git reset <FILE>对我不起作用。

4

2 回答 2

4

首先,您应该通过以下方式恢复上次提交并将所有文件返回到暂存区:

git reset --soft HEAD~1

这不会删除任何文件,而且很安全。

然后,您可以通过以下方式删除所有添加到暂存区域的文件:

git reset

现在,如果您运行git status,您可以看到所有文件都未暂存。

然后,您可以git add选择您想要的唯一文件。

于 2016-10-20T19:43:33.387 回答
1
$ git commit -m "Something terribly misguided"              (1)
$ git reset HEAD~                                           (2)
<< edit files as necessary >>                               (3)
$ git add ...                                               (4)
$ git commit -c ORIG_HEAD 
  1. 这是您要撤消的内容
  2. 这会使您的工作树(磁盘上文件的状态)保持不变,但会撤消提交并使您提交的更改未暂存(因此它们将在 git status 中显示为“未暂存的更改”,您需要添加在提交之前再次提交)。如果您只想对先前的提交添加更多更改,或更改提交消息1,您可以使用 git reset --soft HEAD~ 代替,这类似于 git reset HEAD~ 但保留现有更改暂存。
  3. 更正工作树文件。
  4. git add 任何你想包含在你的新提交中的东西。
  5. 提交更改,重用旧的提交消息。reset 将旧头复制到 .git/ORIG_HEAD;使用 -c ORIG_HEAD 提交将打开一个编辑器,该编辑器最初包含来自旧提交的日志消息,并允许您对其进行编辑。如果您不需要编辑消息,则可以使用 -C 选项。

资料来源: 如何撤消 Git 中的最后一次提交?

于 2016-10-20T19:26:58.113 回答