前言
对于我们日常开发中,我们常用的方法可能是git reset --hard,来强行回退commit所提交的信息,这是不友好的,也许我们希望对误操作提交的commit不进行删除而是重新修改并进行提交,这个时候就需要–soft操作了,下文将介绍hard模式与soft模式的差异~
git reset中的hard与soft
对于git reset我们在日常主要是使用其两种模式,分别为hard与soft模式,对于
git reset --hard
的作用是代码强制回溯到某节点,对于当前节点->回溯节点中间已commit的内容就会全部消失,而
git reset --soft
模式下与hard模式会有所不同,他会保存当前节点->回溯节点之间已保存的内容。
--hard场景:1.当我们发现提交的某个commit思路不正确,或与业务有很大的出入时,我们此时可以选择使用–hard去回退版本(–hard)。
--soft场景:1.当我们不小心把还没有添加完毕的功能commit提交上去时,这个时候我们可以使用–soft去回退我们误提交的commit,完成此功能后,在重新提交commit。
使用:
// 强回最近一次的commit所提交的内容(不保留内容)
git reset --hard
// 强回对应commitID的内容(不保留内容)
git reset --hard commitID
// 恢复最近一次的commit所提交的内容(保留内容)
git reset --soft HEAD^
// 恢复对应commitID的内容(保留内容)
git reset --hard commitID
例子:
初始化三个commit,每个commit对应添加内容a,b,c
reset --soft到b节点
git reset --soft 4fcd5771bbd2a81f1fe60716af79a103e9cc143b
结果:
此时我们软回退到b节点,git log信息中提交节点c的信息消失,并且c的内容被保留回退下来。
reset --hard到b节点
git reset --hard 4fcd5771bbd2a81f1fe60716af79a103e9cc143b
当我们使用reset --hard时,git log信息中提交节点c的信息消失,并且c的内容不会被保留下来。
版权归原作者 我的名字豌豆 所有, 如有侵权,请联系我们删除。