Git 的 4 个阶段的撤销更改

这里写图片描述

基本概念

3个步骤

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

git add .

git commit -m “comment”

git push

  1. git add .把所有文件放入暂存区;
  2. git commit把所有文件从暂存区提交进本地仓库;
  3. git push把所有文件从本地仓库推送进远程仓库。

4个区

git之所以令人费解,主要是它相比于svn等等传统的版本管理工具,多引入了一个暂存区(Stage)的概念,就因为多了这一个概念,而使很多人疑惑。其实,在初学者来说,每个区具体怎么工作的,我们完全不需要关心,而只要知道有这么4个区就够了:

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

5种状态

以上4个区,进入每一个区成功之后会产生一个状态,再加上最初始的一个状态,一共是5种状态。以下我们把这5种状态分别命名为:

● 未修改(Origin)
● 已修改(Modified)
● 已暂存(Staged)
● 已提交(Committed)
● 已推送(Pushed)

检查修改

// 已修改,未暂存
git diff
只检查我们的工作区和暂存区之间的差异

// 已暂存,未提交
git diff --cached
暂存区和本地仓库之间的差异

// 已提交,未推送
git diff master origin/master
本地仓库和远程仓库之间的差异

撤销修改

  1. 已修改,未暂存
    这时候我们的文件还在工作区,并没有进入暂存区,我们可以用:
    git checkout .
    或者
    git reset –hard

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

  2. 已暂存,未提交
    你已经执行了git add .,但还没有执行git commit -m “comment”。这时候你意识到了错误,想要撤销,你可以执行:
    git reset
    git checkout .
    或者
    git reset –hard

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

或许你已经注意到了,以上两个步骤都可以用同一个命令git reset –hard来完成。是的,就是这个强大的命令,可以一步到位地把你的修改完全恢复到未修改的状态。

  1. 已提交,未推送
    既执行了git add .,又执行了git commit,这时候你的代码已经进入了你的本地仓库
    git reset –hard origin/master
    从远程仓库把代码取回来吧。

  2. 已推送
    你既git add了,又git commit了,并且还git push了,这时你的代码已经进入远程仓库。如果你想恢复的话,还好,由于你的本地仓库和远程仓库是等价的,你只需要先恢复本地仓库,再强制push到远程仓库就好了:
    git reset –hard HEAD^
    git push -f

Reference

  • www.fengerzh.com/git-reset
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值