Git分支管理
1 Git分支概述
使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。
如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。
通过分支,您可以同时拥有不同版本的存储库。您可以在存储库中创建 master 以外的其他分支。
您可以使用分支一次拥有项目的不同版本。 当您想要在不更改主要代码源的情况下向项目添加新功能时,这非常有用。
在合并主分支之前,在不同分支上完成的工作不会显示在主分支上,您可以使用分支进行试验和编辑,然后再将其提交到 master。
2 Git分支命令
Git分支常用管理命令:
a:查看分支
[root@git data]# git branch
b:创建分支
[root@git data]# git branch testing
[root@git data]# git branch
* master #表示当前所在的分支
testing
c:切换分支
[root@git data]# git checkout testing
[root@git data]# git branch
master
* testing #当前已切换到testing分支
提示:此时tesgin分支已经复制了一套master分支所有内容(与master分支环境一致),此时开发人员可以在testing分支进行代码提交并测试,而并不会影响master主干代码。
d:testind分支创建项目文件
[root@git data]# touch t1.txt
[root@git data]# echo hello >> t1.txt
e:提交至仓库
[root@git data]# git status
[root@git data]# git add t1.txt
[root@git data]# git commit -m '增加t1.txt'
[root@git data]# git log --oneline
911b02f 增加t1.txt
提示:此时在testing分支所有的操作都不会影响master分支。
f:切换至master分支查看是否发生变化
[root@git data]# git checkout master
切换到分支 'master'
[root@git data]# git log --oneline --decorate
07eae2e (HEAD, master) 删除c.txt #master分支并没有受到影响
接下来可以将testing分支的代码合并至master分支。
3 Gir分支合并
使用git merge
命令可以将指定分支的文件合并到当前分支。
a:合共testing分支(提示:在master分支执行合并操作)
[root@git data]# git merge testing
Merge branch 'test'
[root@git data]# git log --oneline
911b02f 增加t1.txt
提示:此时已经将testind分支文件合并至master分支,至时testing分支可以删除。
b:删除testing分支
[root@git data]# git branch -d testing
提示:如果你已经在testing分支,请先切换至其他分支,不允许在当前分支进行删除。
4 Git冲突合并
当您执行代码合并时,您可能会遇到合并冲突的情况。 这意味着您的两个提交修改了同一个文件中的同一行,而 Git 不知道要应用哪个更改。
a:创建testing1、testing2分支
[root@git data]# git branch testing1
[root@git data]# git branch testing2
[root@git data]# git branch
* master
testing1
testing2
b:切换至testing1分支向t1.txt文件写入内容并提交至仓库
[root@git data]# git checkout testing1
[root@git data]# echo "testing1 branch" >> t1.txt
#将修改提交到仓库
[root@git data]# git add t1.txt
[root@git data]# git commit -m 'add testing1 branch'
c:切换到testing2分支向t1.txt文件写入内容并提交至仓库
[root@git data]# git checkout testing2
[root@git data]# echo "testing2 branch" >> t1.txt
#将修改提交到仓库
[root@git data]# git add t1.txt
[root@git data]# git commit -m 'add testing2 branch'
提示:此时testing1与testing2分支下的t1.txt文件内容不一致。
d:切换到master分支进行合并
[root@git data]# git checkout master
[root@git data]# git marge testing1
[root@git data]# git merge testing2
自动合并 t1.txt
冲突(内容):合并冲突于 t1.txt
自动合并失败,修正冲突然后提交修正的结果。
e:用vim
解决冲突后手动提交至仓库
[root@git data]# vim t1.txt
hello
<<<<<<< HEAD #删除符号行
testing1 branch
======= #删除符号行
testing2 branch
>>>>>>> testing2 #删除符号行
f:重新提交至仓库
[root@git data]# git add t1.txt
root@git data]# git commit -m 'merge testing1 testing2'
g:查看结果
[root@git data]# git log --oneline --decorate
0428c8e (HEAD, master) merge testing1 testing2
评论区