在某个commit节点创建分支
git checkout -b feature20171102 45efd508d3b689d947d8d3393e9b39faa6b4c17c
撤销某个节点之后的提交,但是代码仍保持最新
git reset –soft 30a411b44b291581dcef24c8bc922368d41c0a8e
如果commit了一个不需要commit的文件,可以对其进行撤销。
先使用git log 查看 commit日志
commit 4f07d7a7cc97e2175bbdb1c20dd4ea7cc6def5fe
Author: zhangnan <zhangnan@it.com>
Date: Mon Nov 6 18:11:42 2017 +0800
同步老版本收银台iPhoneX的界面适配
commit 0b54233552232e037fae955a9e235344f416dba7
Author: zhangnan <zhangnan@it.com>
Date: Mon Nov 6 14:22:54 2017 +0800
支付结果页面修改
commit 675d974127a9ce89dbd42b461bf87c4109a3fb83
Author: zhangnan <zhangnan@it.com>
Date: Fri Nov 3 18:26:56 2017 +0800
支付结果界面修改
commit 6f3f2ecf47e631e6f8dd5fe7bdae63745680bef7
Author: zhangnan <zhangnan@it.com>
Date: Thu Nov 2 14:51:06 2017 +0800
commit coupons' info
找到需要回退的那次commit的 哈希值,
git reset –hard commit_id
使用上面的命令进行回退时,会回到此次提交时的状态,工作区的代码也是如此,即之后的修改会丢失
但有时候,我们只是希望撤销commit历史记录,但要保存相应的文件修改并重新进行提交,就要用到以下的命令了:
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置
git reset –mixed
此为默认方式,不带任何参数的git reset,即这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft
回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard
彻底回退到某个版本,本地的源码也会变为上一个版本的内容