分支是git的必杀技。
站点另一个角度,分支是的快照移动有向图,刚好是拓扑排序的一种例子。
basic
git branch testing #创建分支
git checkout testing #切换到分支testing
git checkout -b iss101 # creat a branch named iss101,and checkout it .
git checkout master #切换到主分支
git merge testing #将testing合并到master
git branch -d testing #将testing分支删除
git merge -m “merge dev branch info.” dev #将dev分支合并到master.
git merge --no-ff -m "merge with no-ff" dev # no fast-forward,提供分支追踪
git log --graph #命令可以看到分支合并图
git branch -v #管理分支并查看信息
remote branch
(远程仓库名/分支名称)
获取了远程分支之后,一般映射为:origin/master --> master
git fetch teamone # 获取teamone分支
git push origin serverfix #将本地分支推送到远程,仍然叫做serverfix分支
git checkout --track origin/serverfix #跟踪远程分支
git checkout -b sf origin/serverfix #为本地分支设定不同于远程分支的名字
git push origin :serverfix #删除远程分支
rebase
与merge并列,是另一个合并分支的做法。
git checkout experiment #切换到experiment
git rebase master #experiment作为一个补丁,和master的HEAD,合并,生成一个新的提交,接下来需要一个Fast Forward合并,如下
git checkout master
git merge experiment
git rebase --onto master server client #将client并入master,其中server是master的分支,client 是master的分支
git checkout master
git merge client
git rebase master server #将server合并到master
git checkout master #切换主分支
git merge server #将server和master进行一次FF合并
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。