如何撤销git-rm

如何撤销git-rm,git,Git,我意外地将一个(巨大的)日志文件添加并提交到本地git存储库中,然后执行了一个git rm(没有--cached)。所以历史是这样的: > git status modified: Foo.java Untracked files: (use "git add <file>..." to include in what will be committed) huge_file.log nothing added to commit but untracke

我意外地将一个(巨大的)日志文件添加并提交到本地git存储库中,然后执行了一个
git rm
(没有--cached)。所以历史是这样的:

> git status

modified:  Foo.java

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    huge_file.log

nothing added to commit but untracked files present (use "git add" to track)
然后(我忽略了我添加了
大文件.log
)我做了一个
git提交

> git commit -am "Foo commit"
[master 7582793] Foo commit
 1 file changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 huge_file.log
然后我意识到我已经添加并提交了
大文件.log
。所以我想我可以通过执行git rm hug_file.log来撤销它:

> git rm huge_file.log
> git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    huge_file.log
>git rm hugh_file.log
>git状态
论分行行长
您的分支比“原始/主分支”早1个提交。
(使用“git push”发布本地提交)
要提交的更改:
(使用“git重置磁头…”取消分级)
已删除:巨_file.log
因此,在这一点上,我意识到了我所做的混乱:我不能提交和推动以掌握这些更改,因为这意味着推动
大文件.log
,然后删除
大文件.log
。不幸的是,我无法推送,因为每个文件的文件限制为100 MB,而且
大文件.log
超过1 GB

那我现在能做什么呢?我不能简单地将HEAD重置为以前的提交,因为我在
Foo.java
中做了很多我不想撤消的更改

是否有办法更改以前的提交以删除
巨大的\u文件.log

请注意,
Foo.java
仅代表StackOverflow上更好的可读性。我已经处理了大约10个文件,修改了每个文件中的许多代码行,我不想丢失这些更改


现在该怎么办?

如果只是在最后一次提交中, 然后执行
git rm hug_file.log
,然后执行
git commit--amend

Git允许您对上次犯下的错误进行修正。字面意思。

你可以这样做

$ git reset --soft HEAD~[n]
其中
[n]
是您希望重置的过去提交次数

例如,撤消上一次提交

$ git reset --soft HEAD~1
$ git status

然后像平常一样继续提交文件。

如果尚未提交。您可以使用
git restore

在运行此命令时,我遇到了此错误
git:“restore”不是git命令。
$ git reset --soft HEAD~1
$ git status