1 撤销本地硬盘上的修改 (Disk)
场景:仅在硬盘上修改,未提交至暂存区。
需求:撤销硬盘上的修改。
|
|
2 撤销暂存区中的修改 (Staging)
场景:修改已 git add
提交至暂存区。
需求:将修改文件从暂存区移出,且保留硬盘修改。
|
|
场景:修改已 git add
提交至暂存区。
需求:撤销所有修改,将修改文件从暂存区移出,不保留硬盘修改。
|
|
3 撤销本地存储库的修改 (Local)
场景:暂存区修改已 git commit
提交至本地存储库。
需求:撤销本地存储库的 commit, 文件修改保留在暂存区与硬盘。
|
|
场景:暂存区修改已 git commit
提交至本地存储库。
需求:同时撤销 git commit
与 git add
。仅在硬盘上保留修改,撤销本地存储库的 commit,不提交至暂存区。
|
|
场景:暂存区修改已 git commit
提交至本地存储库。
需求:撤销本地存储库的 commit, 将修改文件从暂存区移出,不保留硬盘修改。
|
|
场景:暂存区修改已 git commit
提交至本地存储库。
需求:新增一个 commit, 将需要撤销的 commit 所修改内容反向改回。
特点是可以 revert
任意一个 commit 且不影响后续已提交的 commit。
|
|
4 撤销远程存储库的修改 (Remote)
场景:本地存储库的修改已 git push
至远程存储库。
需求:将远程存储库恢复至某 commit 之前。
首先判断影响分支是公有分支还是个人分支。
公有分支:只能使用 revert
,只能增加不能减少。
|
|
个人分支:可在本地 reset
后强制 push
.
|
|