目录:
1.创建分支
git branch (branchname) 命令就可以创建一个新的分支。
第一步:创建一个名称为test的分支 random@random:~/repo$ git branch test 第二步:查看已经创建的分支 random@random:~/repo$ git branch * master test
2.切换分支
git checkout (branchname)命令可以切换到你想切换的分支。
第一步:切换到test分支 random@random:~/repo$ git checkout test A README D README.md Switched to branch 'test' 第二步:查看分支,可以看到test分支前面有一个星号,表示当前所在分支。 random@random:~/repo$ git branch master * test
3.删除分支
git branch -d (branchname)命令可以删除指定的分支。
第一步:查看当前仓库中的分支 random@random:~/repo$ git branch * master test 第二步:删除test分支 random@random:~/repo$ git branch -d test Deleted branch test (was 4fc3aa2). 第三步:查看当前仓库的分支,test分支已经被删除了。 random@random:~/repo$ git branch * master
4.创建并进入分支
我们也可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
第一步:查看当前仓库中的分支 random@random:~/repo$ git branch * master 第二步:创建并进入test分支 random@random:~/repo$ git checkout -b test A README D README.md Switched to a new branch 'test' 第三步:查看当前位置,test前面标有星号,表示当前位于test分支 random@random:~/repo$ git branch master * test
5.分支进一步理解
通过创建分支的方式你可以从开发主线分离出来,开发特定的功能。
第一步:查看当前所在分支,可以看到位于master,README文件内容为hello hello world random@random:~/repo$ git branch * master test random@random:~/repo$ cat README hello hello world 第二步:切换到test分支,并修改文件内容为I am test branch random@random:~/repo$ git checkout test A README D README.md Switched to branch 'test' random@random:~/repo$ echo "I am test branch" > README random@random:~/repo$ git status -s RM README.md -> README 第三步:提交修改内容到版本库,并查看文件内容 random@random:~/repo$ git commit -am "test branch" [test b010af7] test branch 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 README random@random:~/repo$ cat README I am test branch 第四步:切换到master分支,并查看文件内容为hello hello world random@random:~/repo$ git checkout master Switched to branch 'master' random@random:~/repo$ git status -s random@random:~/repo$ cat README.md hello hello world
6.分支合并
有时候需要将分支的内容合并到主分支中,这时就需要使用分支合并的命令了,命令为git merge 后面接需要合并的分支名称。
第一步:创建一个新的文件merge,文件内容为git merge random@random:~/repo$ echo "git merge" > merge random@random:~/repo$ ls merge README.md 第二步:切换到test分支,并将merge提交到版本库 random@random:~/repo$ git checkout test Switched to branch 'test' random@random:~/repo$ git add merge random@random:~/repo$ git commit -m "git merge test" [test cb79a4e] git merge test 1 file changed, 1 insertion(+) create mode 100644 merge 第三步:产看当前分支中文件的内容 random@random:~/repo$ ls merge README random@random:~/repo$ cat merge git merge random@random:~/repo$ cat README I am test branch 第四步:切换回master分支,并查看文件内容,两个分支文件各不相同 random@random:~/repo$ git checkout master Switched to branch 'master' random@random:~/repo$ ls README.md random@random:~/repo$ cat README.md hello hello world 第五步:合并test分支 random@random:~/repo$ git merge test Updating 4fc3aa2..cb79a4e Fast-forward README | 1 + README.md | 2 -- merge | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 README delete mode 100644 README.md create mode 100644 merge 第六步:查看合并后的master分支,可以看到文件已经被更该,README.md文件被删除 random@random:~/repo$ ls merge README random@random:~/repo$ cat merge git merge random@random:~/repo$ cat README I am test branch
7.处理分支冲突
当进行分支合并的时候,有时候会存在两个分支对同一个文件的同一部分内容进行了更改,这时候会出现合并冲突,这时候就需要手动处理分支冲突。
第一步:查看当前分支的文件内容 random@random:~/repo$ git branch * master test random@random:~/repo$ cat README I am master 第二步:切换到test分支,并更改README文件内容,然后提交到版本库 random@random:~/repo$ git checkout test Switched to branch 'test' random@random:~/repo$ echo "I am test" > README random@random:~/repo$ git commit -am "test" [test 2f26c64] test 1 file changed, 1 insertion(+), 1 deletion(-) random@random:~/repo$ cat README I am test 第三步:创建一个文件file,方便查看分支合并的效果,记得提交到版本库 random@random:~/repo$ touch file random@random:~/repo$ ls file README random@random:~/repo$ git add file random@random:~/repo$ git commit -m "test1" [test e2c1f99] test1 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 file 第四步:切换到master分支,然后和并分支,可以看到Automatic merge failed,这是因为两个分支中的README文件,不相同 random@random:~/repo$ git checkout master Switched to branch 'master' random@random:~/repo$ git merge test Auto-merging README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result. random@random:~/repo$ ls file README 第五步:手动修改README文件 random@random:~/repo$ cat README <<<<<<< HEAD I am master ======= I am test >>>>>>> test random@random:~/repo$ vim README random@random:~/repo$ cat README I am master I am test random@random:~/repo$ git status -s UU README A file 第六步:提交分支内容到版本库 random@random:~/repo$ git commit -am "git merge" [master 7a68a29] git merge