git 命令备忘

2016-01-14  本文已影响28人  Xiao_Li


用reflog挽救错误的重置
  1. git reflog show master | head -5查看master分支指向的变迁
  2. git reset --hard master@{2} 重置master为两次改变之前的值

git reset

git checkout

案例

假设你有一段很长的历史比如A-1-2-3-4-5-6-7-8-B,这个时候你忽然发现在1的地方,有一处错了,但你又不想git reset,再一个一个重写提交信息,这个时候你就可以用git rebase --onto了。其实很简单,假设我们在1这个节点有个错误,首先,我在1切一个分支temp,切过去之后做更改,更改之后我用git commit --amend,即重写本次提交历史。提交之后,我1的提交信息没有改变,但文件已经被我改变了,好,接下来要做的就是把原来1之后到B的历史,加到新的1之上。因为我们通过log可以看到,此时的1和新1完全走的是两条分支状态,所以自然而然的我们会想到去这么做。这个时候就可以用我们的git rebase --onto了,首先在切片末尾,即B上建立一个活动分支result,然后调用命令git rebase --onto 新1 1 result,注意里面开闭区间的问题,因为我此时已经有1的历史,所以我应该从1的下一个开始,但又因为是坐开又闭,所以我这里就直接写1就没问题。这样就完成了回退历史做修改,并且可以不用重新写提交信息的操作。


上一篇下一篇

猜你喜欢

热点阅读