【git】撤销操作
1. 使用git一般会涉及到四个区,disk, staging, local, remote,初始情况下,四个区域保持同步。
2. 当修改disk后,可以通过以下命令查看和撤销修改
git diff
#查看对哪些文件做了修改
git status
# 查看哪些文件做了修改并未提交到stage区
git checkout changed_file
or
git restore changed_file
#撤销对文件的修改
3. 当使用git add将文件放入staging时,可通过以下命令撤销
git reset changed_file
or
git restore --staged changed_file
# 把文件从暂存区(staging)移出,commit时不会commit此文件,不会对硬盘上的源代码进行修改。git checkout HEAD changed_file
#把文件从暂存区移出,并撤销对硬盘的修改。
4. git commit 之后的撤销
git reset --soft HEAD~1
#只撤销commit,HEAD表示最近的一次commit,~1表示之前一个。此命令会将local git变回之前一次的commit。此命令之后,硬盘中文件不变,此命令也会在暂存区,只是撤销了local git的commit。git reset HEAD~1
or
git reset --mixed HEAD~1
#同时撤销git commit 和 git add, 只保留硬盘上的修改。git reset --hard HEAD~1
#同时撤销git commit, git add 和对硬盘的修改,完整的恢复到初始状态。#如何想退回到之前两个commit的状态 HEAD~2git revert HEAD
#相当于在change的基础上增加了一个-change,最终结果也会回到 HEAD~1的版本,但会增加一个commit。
#git revert 可以撤销之前任意一个commit
#当修改是公有分支时,只能使用git revert命令(共有分支只能增加commit,不能减少commit)
#当修改时个人分支时(此分支只有一个人使用),可以使用git reset命令,但当push到远端时需要使用
git push -f
# -f force push