分支
常用分支命令
1  | 查看分支:git branch  | 
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活
在dev分支上进行开发,也就是说,dev分支是不稳定的,到版本发布时,再把dev分支合并到master上,在master分支发布版本
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
如果有中间版本,比如测试版,预发布版,按照优先级和流程,从dev递归合并到master上。
合并分支时,加上
--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
创建分支
1  | $ git branch <branchname>  | 
查看分支
all branch
1  | $ git branch  | 
切换分支
1  | $ git checkout <branchname>  | 
创建+切换分支
1  | $ git checkout -b <branchname>  | 
合并某分支到当前分支
1  | $ git merge <branchname>  | 
删除分支
1  | $ git branch -d <branchname>  | 
强制删除
1  | $ git branch -D <branchname>  | 
查看分支合并图
当Git无法自动合并分支时,就必须首先解决冲突。 解决冲突后,才可以继续操作。
1  | $ git log --graph  | 
查看分支树(简版)
为什么要敲这么长的命令呢?因为树很长,而简版一眼可以看穿架构
1  | git log --graph --pretty=oneline --abbrev-commit  | 
普通模式合并分支:禁用no-ff
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。  
合并分支时,加上--no-ff参数就可以用普通模式合并,能看出来曾经做过合并,包含作者和时间戳等信息,而fast forward合并就看不出来曾经做过合并。
1  | $ git merge --no-ff -m "description" <branchname>  | 
保存工作现场
1  | $ git stash  | 
查看工作现场列表
1  | $ git stash list  | 
恢复工作现场
但是恢复后,stash内容并不删除,你需要手动删除
1  | git stash apply  | 
删除工作现场
1  | git stash drop  | 
恢复后自动删除工作现场
1  | git stash pop  | 
恢复指定的工作现场
1  | git stash apply <stash version>  | 
丢弃一个没有合并过的分支
1  | $ git branch -D <branchname>  | 
查看远程库信息
1  | $ git remote -v  | 
在本地创建和远程分支对应的分支
建议本地和远程分支的名称保持一致
1  | $ git checkout -b branch-name origin/branch-name,  | 
建立本地分支和远程分支的关联
1  | $ git branch --set-upstream branch-name origin/branch-name;  | 
从本地推送分支
如果推送失败,先用git pull抓取远程的新提交;
1  | $ git push origin branch-name  | 
从远程抓取分支
如果有冲突,要先处理冲突。
1  | $ git pull  |