项目开发时很难一条主线走到底,必不可免的要创建分支。修改Bug或添加新特性时修改的未加验证的代码直接提交到主分支,绝对会让和你一起工作的小伙伴们崩溃,这时候创建分支就很必要了。
在Git中创建分支的成本很低,而且支持本地分支,在本地分支上开发对其他小伙伴基本没有影响。
git branch是常规的分支管理命令。
首先创建一个git库,
mkdir mygit
cd mygit
git init
创建了mygit文件夹,进入文件夹后,创建git库。
增加readme文件,
echo "hello, my git." > readme.txt
提交,
git add readme.txt
git commit -m "init and add readme.txt"
使用git status,看一下当前库的状态,
$ git status
On branch master
nothing to commit, working directory clean
只有一个分支(branch)master,使用git branch命令查看,也是如此,
$ git branch -av #增加-av参数,输入所有分支的详细信息
* master 0e9691a init and add readme.txt
增加一个新的分支my_branch1,
git branch my_branch1
切换到新分支,
git checkout my_branch1
修改readme.txt文件,
$ cat > readme.txt << EOF
> hello, my git.
> Git is very useful!
> EOF
提交,
git add .
git commit -m "test branch modify"
查看readme.txt文件,
$ cat readme.txt
hello, my git.
Git is very useful!
切换到master分支,
git checkout master
查看readme.txt文件,
$ cat readme.txt
hello, my git.
从my_branch1分支切换到master分支后,readme.txt文件也被替换了。
将my_branch1分支下的修改合并到master分支,
git merge my_branch1
查看readme.txt文件,
$ cat readme.txt
hello, my git.
Git is very useful!
已经将my_branch1分支的修改合并到了master中,现在删除my_branch1分支,
$ git branch -d my_branch1
Deleted branch my_branch1 (was a937765).
在git中创建分支,基本没有什么成本,在修改bug或者添加新功能时,我们可以尽情的创建分支修改。
多个人合作时,合并分支经常遇到冲突的情况,我们来模拟一下,
创建分支my_branch2,
git branch my_branch2
切换到my_branch2分支,修改readme.txt文件,在其后追加,
git checkout my_branch2
echo "Git is very great." >> readme.txt
提交,
git add readme.txt
git commit -m "test branch merge conflict"
切换到master分支,修改readme.txt文件,并提交,
git checkout master
echo "git is great." >> readme.txt
git add readme.txt
git commit -m "test branch merge conflict"
合并my_branch2分支,
$ git merge my_branch2
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
产生冲突了。
查看readme.txt文件,
$ cat readme.txt
hello, my git.
Git is very useful!
<<<<<<< HEAD
git is great.
=======
Git is very great.
>>>>>>> my_branch2
<<<<<<< HEAD与=======之间是master分支代码,=======与>>>>>>> my_branch2之间是my_branch2分支代码,我们希望保留my_branch2分支修改的代码,编辑readme.txt文件如下:
hello, my git.
Git is very useful!
Git is very great.
提交,
git add readme.txt
git commit -m "test branch merge conflict"