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
    评论
好的,关于 Git commit 的原理理解,可以简单概括为以下几点: 1. Git 的 commit 是一次代码快照,它会记录当前代码仓库所有文件的状态,并生成一个唯一的 commit ID。 2. 每个 commit 都包含了一个父 commit 的 ID,这样就形成了一个 commit 历史链。 3. Git 的 commit 是不可变的,即一旦生成就不能修改,只能通过新的 commit 来更新代码仓库的状态。 接下来是 reset 和 checkout 命令的详解: 1. reset 命令 reset 命令可以用来撤销之前的 commit,它有三种模式:soft、mixed 和 hard。 - soft 模式:仅撤销最新的 commit,但不会修改代码仓库的状态。使用该模式可以重新提交修改后的代码。 - mixed 模式:撤销最新的 commit,并将代码仓库的状态还原到该 commit 之前的状态。使用该模式可以重新提交修改后的代码,但需要注意之前的 commit 记录已经被删除。 - hard 模式:完全撤销最新的 commit,包括所有修改。使用该模式可以完全删除最新的 commit 记录。 2. checkout 命令 checkout 命令可以用来切换代码仓库的分支或恢复代码仓库某个文件的状态。 - 切换分支:使用 checkout 命令可以切换到指定的分支,例如:git checkout master。 - 恢复文件状态:使用 checkout 命令可以恢复代码仓库某个文件的状态,例如:git checkout -- file.txt。 总的来说,reset 和 checkout 命令都可以用来撤销之前的操作,但是 reset 命令更加强大,可以修改 commit 记录和代码仓库的状态,而 checkout 命令则更加灵活,可以用来切换分支和恢复文件状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值