Git操作:reset

Git 操作:reset

在了解reset的用法前,建议读者需首先明晰git仓库的结构(working tree,index,local repository)官方文档中这样定义:git-reset - Reset current HEAD to the specified state。
current HEAD是local repository中指向当前所在branch的最新一次commit的标签,因此reset完成的是一个通过重置HEAD以完成版本回退操作。
使用方法:

git reset [-q] [<tree-ish>] [--] <pathspec>…​
git reset [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]
git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>…​]
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

前三种用于将特定路径(pathspec)的Index回退到某个branch的版本,注意着仅仅是对Index缓冲区的修改,应用场景较少,常用于git reset HEAD <file>以将某个在Index中已经修改但未commit的文件重置为add前的版本,相当于add的反操作。
在工作中我们常常希望使用reset将整体代码回退到某一版本,使用较多的是上述第四种中的soft、hard与mixed用法,默认参数是–mixed和HEAD(local respository中的当前版本)。下面具体介绍其用法。

reset --soft

git reset --soft <commit> 

仅仅将local repository重置为某一次commit的版本(将HEAD标签指向为该commit),在这一次commit后所有的修改都会变成未commit的状态。

reset --mixed(default)

git reset <commit> 

将local repository和Index同时重置为该commit的版本,working tree不变,因此可能会产生很多没有add的文件,但不存在未commit的文件。

reset --hard

git reset --hard <commit> 

同时将local repository、index和working tree回退到某个commit的版本,注意工作区working tree中的代码也会回退到该版本。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值