30 06 2020

1.在未暂存前,撤销本地修改

在没有暂存之前(没有执行git add命令),我们可以通过以下命令查看本地修改

git diff

如果我们不想要这些代码本地代码(比如一些临时的测试代码),可以通过以下命令一次性撤销所有本地修改

git checkout -- .

我们也可以指定具体的文件路径,撤销该文件的修改

git checkout -- [filename]


2.在暂存之后,撤销暂存区的修改

在暂存之后(执行git add命令之后),想要查看暂存区的修改,可以执行以下命令

git diff --staged

如果这时我们想要一次性撤销暂存区的全部修改,可以执行以下命令(当然也可以撤销暂存区指定文件的修改)

git reset .


3.提交到本地仓库之后(git commit 之后)(但未推送到远程仓库),撤销本次提交

方法一

git checkout(Commit ID)


方法二

git reset --hard HEAD~1



4.修改提交

原本打算修改两个文件,结果只提交了一个文件,但又不想生成两个提交记录(Commit ID),具体执行的命令如下

git add src/app/app.component.css
git commit --amend

还有一种场景可能更加常见,没有遗漏的文件,只是提交信息里有一个单词写错了,可以使用以下命令进行修补:

git commit --amend -m "add test container"

--amend修补参数会将改变之前的Commit ID,但不会生成新的Commit ID。


5.撤销提交历史中的某一次指定的提交

如果只想撤销提交历史中的某一次提交,可以使用以下命令撤销该次提交, 并生成一个新的提交在最前面

git revert 711bb0b



6.合并出现冲突时,撤销合并操作

两个分支改了同一个文件的同一个地方,合并时将出现冲突,如果不想解决冲突,想撤销这个合并,可以使用以下命令:

git merge --abort     //abort之后,将恢复合并之前的状态。


7.暂存区的文件加多了,想移除,又不想删掉本地的文件

git rm --cached src/test.pptx



8.分支重命名

git br -m [old_br] [new_br]



9.撤销变基操作

将 rebase_test 分支的修改变基到master上:

git co rebase_test
git rebase master

撤销的步骤如下:

1.使用 git reflog 命令找到变基前的提交 09b0adc
2.使用 git reset --hard 09b0adc 重置到该提交