今天学习了一个小技巧,如何把改动从本地分支推送到远程仓库的一个异名分支:
local_branch:remote_branch是一个所谓的,它的完整版是:
把本地分支同步到远程同名分支:
把本地分支同步到远程异名分支:
如果省略,则删除远程分支:
如果省略和,则将所有本地分支的改动同步到远程的同名分支:
:也可以省略,上面的命令和git push orgin等效。
non-fast-forward
默认情况下push命令只使用fast-forward操作,如果在前面指定+,可以让push使用non-fast-forward操作,这跟在push后面指定--force参数是一个道理
*参考: git push --help
这是2007年的演讲,但是仍然值得一看。
git一直有对初学者不友好的名声,主持人一开始就调侃了一句:
It was especially designed to make you feel less intelligent than you think you were.
git最初被设计用来管理Linux内核,而Linus作为内核负责人,当然是以方便自己使用的角度出发来设计git。
Linux说出了自己对版本管理的三点要求:
If you are not distributed, you are not worth using.
If you perform badly, you are not worth using.
If you can not guarantee that the stuff I put into the SCM come the exactly the same. You are not worth using.
为什么像CVS这些集中式的版本管理工具无法用来管理Linux内核呢?Linus给出了答案,主要是因为没有去中心化。...
git允许我们修改一个commit的历史,并可以将修改后的历史push到远程仓库:
这种情况下,当另一个人从远程仓库pull的时候,就会出现冲突。如果你不想解决冲突,可以用万能的reset命令:
上面的命令用远程的改动来覆盖本地的改动,如果你想保存本地的改动,可以先把本地的改动stash起来。