为了账号安全,请及时绑定邮箱和手机立即绑定

git checkout与git reset有啥区别吗

git checkout与git reset有啥区别吗

Git
holdtom 2019-03-23 15:15:36
git checkout与git reset有啥区别吗
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

git checkout主要有三个作用:
第一个就是切换分支。例如你从远程仓库clone下来所有的源代码,你git branch一下会看到你通常是在master,如果你想切换到某一个分支上呢?git checkout <branchname>
第二个就是放弃对某个文件的修改。例如你想放弃对某个文件Hello.cpp的修改,git checkout -- <Hello.cpp>
第三个就是新建一个分支,git checkout <-b> <branchname>,不加-b的话只新建不切换到新的分支上,加-b新建并切换到该分支上

git reset主要是取消上一次的操作,具体用法有很多,说两个:
第一个取消merge,git reset --hard ORIG_HEAD,这样会退回到merge前的代码。
第二个就是取消commit,git eset HEAD~<num> <-soft/-hard>,取消上num次的commit
第三个是将文件从stage(追踪的库)中移除,git reset HEAD <filename>

查看完整回答
反对 回复 2019-03-25
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

git reset用于撤销操作。 

git reset [--hard | --mixed | --soft] [<commit>] 

--hard 会执行下图中操作123,参数hard会同时改变版本库的HEAD引用指向,缓存区内的内容,以及工作空间的内容,执行之后HEAD引用会指向commit指向的版本,同时缓存区内的内容也会以版本库HEAD指向的版本进行刷新,工作空间内的内容也会以HEAD引用指向的代码版本进行替代。

--mixed 会执行下图中操作12 在该参数的情况下,工作空间内的内容不会被刷新,只会更新HEAD引用的指向以及缓存区的内容 

--soft 会执行下图中操作1 只会改变HEAD引用的指向

git checkout一般用于切换分支,也可以用来回退代码

git checkout branchName切换分支到指定的分支上,使用的时候,需要注意,使用该命令工作空间下的内容会被指定的分支内容覆盖,在之前分支上面所做的没有提交的变动会丢失。 如果需要新建一个分支并使用新的分支,我们可以使用git checkout -b dev,这样我们就新建了一个名为dev的分支,并切换到该分支下面。 

该命令默认以HEAD引用来创建分支,需要需要使用指定的版本号来创建分支,可以在后面跟上版本号。

 


查看完整回答
反对 回复 2019-03-25
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

git checkout -- file;撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区
git reset HEAD -- file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化

查看完整回答
反对 回复 2019-03-25
  • 3 回答
  • 0 关注
  • 1221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信