列出全部分支,当前分支前面会标一个*号git
$ git branch * dev master
表示有两个分支,当前分支为dev。app
git branch命令的-r选项,能够用来查看远程分支,-a选项查看全部分支。测试
$ git branch -r MyName/master $ git branch -a * master remotes/origin/master
上面命令表示,本地仓库的当前分支是master,远程分支是origin/master。3d
git branch命令的-d选项,用于删除分支(删除分支不能在 被删除分支上 进行)code
$ git branch -d test Deleted branch test (was 64fcede).
切换分支blog
$ git checkout -b dev origin/master
上面命令表示,在origin/master的基础上,建立一个新分支并切换至新分支。git checkout命令加上-b参数表示建立并切换,即至关于:开发
$ git branch dev //建立dev分支 $ git checkout dev //切换到dev分支 Switched to branch 'dev'
合并指定分支到当前分支rem
$ git merge dev
当为dev进行新的一次提交,切换到master分支,会看到Git还会自动提示咱们当前master分支比远程的master分支要超前1个提交。文档
$ git checkout master Switched to branch 'master' Your branch is ahead of 'MyName/master' by 1 commit. (use "git push" to publish your local commits)
接下来为master分支也进行一次新的提交,而后合并dev分支it
$ git merge dev Auto-merging 新建文本文档.txt CONFLICT (content): Merge conflict in 新建文本文档.txt Automatic merge failed; fix conflicts and then commit the result.
能够看到git提示txt文件存在冲突,必须手动解决冲突后再提交。此时查看修改的txt
$ cat 新建文本文档.txt 123 <<<<<<< HEAD master change ======= dev change >>>>>>> dev
Git用<<<<<<<,=======,>>>>>>>标记出不一样分支的内容
接下来对内容进行修改再提交
git add * $ git commit -m'conflict fixed' [master a94df7f] conflict fixed
分支合并状况可用带参数的git log查看
版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于平常开发。
除了常设分支之外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:
这三种分支都属于临时性须要,使用完之后,应该删除,使得代码库的常设分支始终只有Master和Develop。
第一种是功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop,而后删除feature分支。
功能分支的名字,能够采用feature-*的形式命名。
它是指发布正式版本以前(即合并到Master分支以前),咱们可能须要有一个预发布的版本进行测试。
预发布分支是从Develop分支上面分出来的,预发布结束之后,必须合并进Master和Develop分支,而后删除预发布分支。它的命名,能够采用release-*的形式。
软件正式发布之后,不免会出现bug。这时就须要建立一个分支,进行bug修补。
修补bug分支是从Master分支上面分出来的。修补结束之后,再合并进Master和Develop分支,而后删除bug分支。它的命名,能够采用fixbug-*的形式。
假若有个场景,在工做中,接到个bug修复任务,此时你正在dev进行的工做尚未提交也没办法提交(还未完成),注意,未提交状态下切换分支会将状态合并到切换分支。要想将dev正在进行的工做现场保存起来,就须要使用Git提供的 git stash
$ git stash Saved working directory and index state WIP on dev: d5dd078 working
查看工做区,能够看到是干净的
$ git status On branch dev nothing to commit, working tree clean
接下来,就要肯定bug在哪一个分支,切换到对应分支并建立临时分支
$ git checkout master Switched to branch 'master' Your branch is ahead of 'MyName/master' by 11 commits. (use "git push" to publish your local commits) $ git checkout -b bug Switched to a new branch 'bug'
完成修复bug后,切换到master分支接着完成合并,最后删除bug分支,bug修复工做便完全结束。
接下来就要回到本来的dev工做了
git checkout dev
以前的保存的工做现场就用git stash list进行查看
$ git stash list stash@{0}: WIP on dev: d5dd078 working
能够看到现场被保存在某个地方,接下来有两个方法恢复:
一是用git stash apply,恢复后stash内容不删除,要删除的话须要用git stash drop命令
二是用git stash pop,恢复的同时把stash内容删除。
假如你在开发一个新功能,最好新建一个feature分支,