一、分支新建与切换
git中的分支,本质上仅仅是个指向 commit 对象的可变指针。
1、新建一个分支 (比如新建一个名为testing的分支)
git branch testing (即是在当前commit对象上新建了一个分支指针)
注:HEAD指向当前所在的分支,用cat .git/head可以查看
2、切换分支 (切换到testing分支)
git checkout testing
3、新建并切换分支
git checkout -b testing (比如在当前commt对象上新建并切换到testing分支)
git checkout -b testing origin/testing (从远程分支新建并切换到testing分支)
注:它相当于上面1-2两条指令,并且本地分支testing会自动将推送和抓取数据定位到origin/testing。
4、git fetch和git pull的区别
git fectch:抓取远程仓库数据到本地仓库,但并不自动合并到工作分支
git pull:从远程仓库抓取数据后并合并到工作分支
5、查看远程仓库信息
git remote show origin ( git remote show [remote-name] )
二、分支合并
1、分支合并 (比如将本地testing分支作的提交合到本地master分支)
git checkout master
git merge testing
2、合并后冲突的解决
git status (查看冲突并解决冲突的代码)
git add xxx (暂存解冲突解决后的文件)
git commit (完成合并后的提交)
3、分支衍合
git rebase master testing (git rebase [主分支] [特性分支])
注:它是把testing分支的修改合并到master分支,跟git merge类似
3、删除分支
git branch -d testing (删除分支testing)
git branch -D testing (强行删除分支tesging
三、推送本地分支
1、将本地的commit推送到远程仓库
git push origin testing ( git push (远程仓库名) (分支名) ) 也可以写成:
git push origin testing:testing (推送本地分支testing到远程分支testing)
注:如果远程没有testing分支,那么这条命令即是上传你的本地分支到远程仓库。
注:git会自动将testing分支名扩展为:refs/heads/testing:refs/heads/testing,所以完整的表达是:
git push origin refs/heads/testing:refs/heads/testing
注:git push [远程仓库名] [本地分支]:[远程分支],如果省略[本地分支],为空格,即是删除远程分支
PS:本文参考了《Pro Git》 :http://git-scm.com/book/zh