欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git 的 4 个阶段的检查修改和撤销更改

程序员文章站 2022-05-25 09:05:31
...

1. 基本概念

1.1. 3个步骤

Git 的 4 个阶段的检查修改和撤销更改

正常情况下,我们的工作流就是3个步骤,对应上图中的3个箭头线:

git add .
git commit -m "comment"
git push
  • git add .把所有文件放入暂存区;
  • git commit把所有文件从暂存区提交进本地仓库;
  • git push把所有文件从本地仓库推送进远程仓库。

1.2. 4个区

  • 工作区(Working Area)
  • 暂存区(Stage)
  • 本地仓库(Local Repository)
  • 远程仓库(Remote Repository)

2. 检查修改

2.1. 已修改,未暂存

git diff

2.2. 已暂存,未提交

git diff --cached [filename]

git diff这个命令只检查我们的工作区和暂存区之间的差异,如果我们想看到暂存区和本地仓库之间的差异,就需要加一个参数git diff --cached。

2.3. 已提交,未推送

git diff master origin/master [filename]

在这里,master就是你的本地仓库,而origin/master就是你的远程仓库,master是主分支的意思,因为我们都在主分支上工作,所以这里两边都是master,而origin是远程。

3. 撤销修改

3.1. 已修改,未暂存

git checkout .

或者

git reset --hard

一对反义词 git add .的反义词是git checkout .。做完修改之后,如果你想向前走一步,让修改进入暂存区,就执行git add .,如果你想向后退一步,撤销刚才的修改,就执行git checkout .。

3.2. 已暂存,未提交

git reset
git checkout .

或者

git reset --hard

git reset只是把修改退回到了git add .之前的状态,也就是说文件本身还处于已修改未暂存状态,你如果想退回未修改状态,还需要执行git checkout .。

3.3. 已提交,未推送

git reset --hard origin/master

3.4. 已推送

先恢复本地仓库,再强制push到远程仓库。

git reset --hard HEAD^
git push -f

4. 总结

以上4种状态的撤销我们都用到了同一个命令git reset --hard,前2种状态的用法甚至完全一样,所以只要掌握了git reset --hard这个命令的用法,从此你再也不用担心提交错误了。

5. 参考

来源:张京

www.fengerzh.com/git-reset/

Git 的 4 个阶段的检查修改和撤销更改