如果远程服务器也需要还原到d756f627fe568f4d8bcf1852ba60557eeab477a5版本,则继续执行
<a></a>
git merge应该大家都比较熟悉,就是把branch merge进来;
git rebase的意思其实也是蛮简单的,字面意思rebase就是把branch的根基替换一下,有点像嫁接。
网上一直流传的三张图,很经典。
before merge/rebase
after git merge master
after git rebase master
其实,这里rebase的线性,是指在当前branch上是线性的,其中带’ (撇号)的commit并没有被同步到master上,仍然在branch上。
下面的图更好一点:
另外两个相关的命令是: git pull和 git pull –rebase。
这两个的区别在于前者是git fetch + git merge,后者是git fetch + git rebase。
什么时候使用merge,什么时候用rebase呢?
里面有详细的解释:
翻译一下:
当你不小心,写错了提交的注视/信息,该如何处理呢。理论上,scm是不应该修改历史的信息的,提交的注释也是。不过在git中,其commit提供了一个–amend参数,可以修改最后一次提交的信息.但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。
下面的命令只能对最后一次的提交进行修改:
对于历史提交,得使用rebase了
表示要修改当前版本的倒数第三次状态。
这个命令出来之后,会出来三行东东:
pick:*
如果你要修改哪个,就把那行的pick改成edit,然后退出。
这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:
来对commit进行修改。
修改完了之后,要回来对不对?
使用下面的命令:
ok,一切都搞定了。