【问题标题】:Undo Add Files in Git在 Git 中撤消添加文件
【发布时间】:2017-03-02 22:51:15
【问题描述】:

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

【问题讨论】:

  • @jjst 请查看编辑为什么我的不同。另外,我的是在提交之后,而不是之前
  • @theEpsilon 你是这个 repo 的唯一用户吗?你基本上需要undo a git push
  • git revert <commit> 这将使用旧提交进行新提交,适合您吗?
  • @legends2k 不,还有很多其他用户

标签: git git-commit git-reset git-add git-stage


【解决方案1】:

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

git reset --soft HEAD~1

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

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

git reset

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

然后,您可以git add 唯一需要的文件。

【讨论】:

  • 优秀的法哈德
【解决方案2】:
$ 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 添加任何你想在新提交中包含的内容。
  5. 提交更改,重复使用旧的提交消息。 reset 将旧头复制到 .git/ORIG_HEAD;使用 -c ORIG_HEAD 提交将打开一个编辑器,该编辑器最初包含来自旧提交的日志消息,并允许您对其进行编辑。如果您不需要编辑消息,可以使用 -C 选项。

来源: How to undo last commit(s) in Git?

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2012-05-11
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多