我最近不小心把一个错误的文件提交(git commit)到了git仓库中,但是还没有push到远程,我要怎么做才能撤销这次commit呢?
$ git commit -m "..." # (0: 错误的提交)
$ git reset HEAD~1 # (1: 恢复到没提交的状态)
[ edit files as necessary ] # (2: 修改错误)
$ git add . # (3)
$ git commit -m # (4: 重新提交)
git reset主要用于撤销提交,但是它有几模式需要关注一下。
git reset
撤销commit,恢复到没有提交的状态,撤销的commit的改动仍然保留,可以通过git add和git commit再次提交。git reset --hard
撤销commit,恢复到上一次的提交状态,撤销的commit改动不保留。git reset --soft
撤销commit,恢复到没有提交的状态,撤销的commit的改动和索引仍然保留,直接通过git commit即可提交。HEAD~1,后面的数字表示撤销的commit数量,如果一次撤销最近3次提交,可以执行git reset HEAD~3
。另外如果通过git reset --hard
撤销导致commit改动丢失,仍然可以通过找回,通过git reflog
可以查看最近的操作的commit的sha值,执行git checkout -b 分支名 sha值
,就可以在新分支上恢复到当时的状态。
内容