Git reset 中 命令详解

A——working (工作区) : a.txt 有修改

B------index (暂存区)  :b.txt 有修改

C -----HEAD  

D -----HEAD^

 

git reset --soft 完全保留 工作区和暂存区,仅改变 HEAD的指向的位置(所有rese都会执行这个操作)。

git reset --mixed  完全保留工作区,彻底清除暂存区。

git reset --hard  彻底清除工作区和暂存区。

 

--merge --keep 这两个选项的效果是保留修改的差异部分。 如果回退的内容与保留的修改存在冲突(有相同文件)则命令会失败.。

git reset --merge 保留 工作区和index之间的差异。

git reset --keep 保留工作区和HEAD之间的差异。

 

使用场景1: 用于撤销 git pull 产生的修改.

 

第一种情况:

  git reset --merge HEAD

     工作区中保留了a.txt的修改,将丢弃b.txt修改,; index 将复原成HEAD(C状态)

       如果暂存区中没有修改,那这个命令不会产生任何修改.

  git reset --keep HEAD

     保留了a.txt 和 b.txt的修改, index将全部复原成HEAD

第二种情况:

 git reset --merge HEAD^

   如果 HEAD vs HEAD^ 有a.txt, 命令将失败

   工作区中保留了a.txt的修改,其它内容恢复到 D状态; index 将复原成HEAD^(D状态)

 git reset --keep HEAD^

   如果 HEAD vs HEAD^ 有a.txt或b.txt修改, 命令将失败 ;

    其它情况:  工作区中保留了a.txt和b.txt的修改,其它内容恢复到 D状态; index 将复原成HEAD^(D状态)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值