更新时间:2022-05-10 22:07:04
git reset --hard d756f627fe568f4d8bcf1852ba60557eeab477a5(版本号)
如果远程服务器也需要还原到d756f627fe568f4d8bcf1852ba60557eeab477a5版本,则继续执行
git push -f
git remote add rocket(远程分支名字,随意起) https://github.com/benjaminwhx/rocket.git(远程分支地址)
git remote -v(查看本地的远程分支信息)
我们可以用git pull rocket master获取远程分支master分支上的更新到本地。
git push rocket master推更新到远程分支
before merge/rebase
1 |
A <- B <- C [master] |
after git merge master
1 |
A <- B <- C |
after git rebase master
1 |
A <- B <- C <- D' <- E' |
其实,这里rebase的线性,是指在当前branch上是线性的,其中带’ (撇号)的commit并没有被同步到master上,仍然在branch上。
下面的图更好一点:
1 |
D'--E' topic |
另外两个相关的命令是: git pull和 git pull –rebase。
这两个的区别在于前者是git fetch + git merge,后者是git fetch + git rebase。
什么时候使用merge,什么时候用rebase呢?
推荐一个地址: http://***.com/questions/804115/when-do-you-use-git-rebase-instead-of-git-merge
里面有详细的解释:
1 |
Merge |
翻译一下:
1 |
Merge |
$ git commit --amend
对于历史提交,得使用rebase了
$ git rebase -i HEAD~3
表示要修改当前版本的倒数第三次状态。
这个命令出来之后,会出来三行东东:
pick:*
pick:*
pick:*
如果你要修改哪个,就把那行的pick改成edit,然后退出。
这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:
$ git commit -amend
来对commit进行修改。
修改完了之后,要回来对不对?
使用下面的命令:
$ git rebase --continue
OK,一切都搞定了。