git reset 撤销

git 撤销操作: git  reset

 

git commit之后,想撤销commit

写完代码后,我们一般这样

$git status    //查看并确定自己修改的文件有哪些

$git add file_name //添加所有文件

$git commit -m "1.XXX;2.XXX"

执行完commit后,想撤回commit,怎么办?

注意:代码还没有git push 没有推到仓库,如果已经git push,另请高明
 

这时如果你希望撤销之前的commit操作,从而以这次的commit为准重新提交,那么你可以使用git commit --amend命令。
这个命令回将暂存区中的文件提交。如果自上次提交以来,你还未做任何修改,那么快照会保持不变,而你所修改的只是提交信息。如果有修改,那么会以第二次的提交为准。

另外一种方法:

$git reset --soft HEAD^

这样就成功的撤销了提交的 git commit

注意,仅仅是撤回commit操作,本地修改或者新增的代码仍然保留。就是说本地代码没有变动。


说一下个人理解:
HEAD^的意思是上一个版本,也可以写成HEAD~1

如果你进行了2次commit,想都撤回,可以使用HEAD~2

顺便说一下,如果commit注释写错了,只是想改一下注释,

只需要:
$git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。


git reset -h

其中HEAD代表版本库,index代表暂存区,另外还有一个我们增删改代码的工作区。所以官方解释翻译过来就是:

--hard : 回退版本库,暂存区,工作区。(因此我们修改过的代码就没了,需要谨慎使用)
删除工作空间改动代码,撤销commit,撤销git add . 

--mixed: 回退版本库,暂存区。(--mixed为git reset的默认参数,即当任何参数都不加的时候的参数)
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft: 回退版本库。
不删除工作空间改动代码,撤销commit,不撤销git add 。

 

提交冲突场景:

1、你已经 git  pull 更新到最新代码状态了,然后需要 git  add 提交你的修改,这时别人向仓库提交了代码,你 git push 代码冲突了

      使用: git reset --soft  提交commit号,将远端工作空间和本地工作空间更新到一致。

    $ git status     #查看状态
    $ git  log       #看提交记录,然后找到你提交之前的代码节点,找到这个 git commit 号,假如是123456
    $
    $ git reset --soft 123456      #同步代码
    $
    $ git statu                     #这时看到你的提交,已经 git  add  的文件
    $
    $ git commit  或者  git  commit  -m  "XXX"   #添加你的提交注释
    $ git  push                                  #提交代码

      然后查看远端代码仓库(最好用浏览器打开),确认一下提交的结果。

2、你已经执行了git add 操作,但是提交有代码没有修改好,想撤销 git add 提交

   方法一:同第一种情况;

   方法二:那么你可以使用命令git reset HEAD <撤销的文件>  来取消暂存;

   方法三:如果不想要这次修改,可以使用 git checkout <撤销的文件> 回退文件,这样就放弃这次修改了。

 

最后一定要搞清楚: --mixed的情况下,版本库和暂存区都将进行了代码回退,工作区代码没动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值