Git学习笔记三:Git分支
来源:互联网 发布:软件系统工程师培训 编辑:程序博客网 时间:2024/06/05 13:26
git默认只有一条主分支,称为master,master上一般是稳定的系统,当我们开发新功能的时候,应该新建一个分支(branch),在分支下面做开发工作,确认分支下的系统通过测试之后,再将分支合并到master主分支上。原则上,可以新建多个分支,各分支上的工作互不干扰。
1、如何新建并切换分支
$git checkout -b mybranch
这条命令相当于执行了以下两条命令
$git branch mybranch
$git checkout mybranch
Switched to a new branch 'mybranch'
M test.txt
2、如何查看现有的分支
$git branch
master
* mybranch
我们可以看出,mybranch左边有一个*号,证明目前的指针是在mybranch分支上的,所以我们所做的commit操作也是在mybranch上面执行,不会影响master
3、合并分支
我们先把text.txt写上hello world,执行add和commit指令。如下:
$ git add test.txt
$git commit -m "提交helloworld"
然后执行
$git checkout master
此时我们可以发现,test.txt里面的hello world文本信息消失了!由于我们切换回了主分支,mybranch分支上的修改是不会对主分支产生影响的,所以接下来,我们需要将mybranch分支上的修改合并到master主分支上。
$git merge mybranch
Updating 03ea170..9b520e0
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
现在打开text.txt,就可以看到hello world了。这里需要注意到的一点是,这里采用了fast-forward的模式,这种模式合并是不会产生合并历史记录的,也就是不能通过git log查到有这条合并记录,可以加上--no-ff强势不使用fast-forward模式:
$git merge --no-ff -m "合并分支" mybranch
4、删除分支
当我们开发完功能并将分支合并到master主分支上之后,mybranch分支就可以删掉了。
$git branch -d mybranch
5、产生冲突
在多人协作的时候,冲突是不可避免的,冲突的概念这里就不讲了,我们来模拟一个版本冲突。
$git checkout -b dev
修改test.txt文本,追加字符串“dev branch”,此时文本内容为"hello world dev branch"
$git add test.txt
$git commit -m "dev branch commit"
切换回master主分支
$git checkout master
修改test.txt文本,追加字符串“master”,此时文本内容为"hello world master"
$git add test.txt
$git commit -m "master branch commit"
$git merge dev
此时就会出现冲突提示,因为dev分支和主分支都有修改文件,而且它们提交的上一个版本是相同的,这时候就会有冲突,提示信息如下:
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
我们打开test.txt,就会发现里面的文本如下:
<<<<<<< HEAD
hello world master
=======
hello world dev branch
>>>>>>> dev
意思是当前版本信息为hello world master,而dev分支信息为hello world dev branch,它们合并的时候起了冲突,我们使用
$git status
查看的时候,会看到红色的字体信息:both modified: test.txt
6、解决冲突
手动打开test.txt并对内容修改为"hello world!",修改完成后执行以下命令,其中,git add命令就是标记冲突已解决
$git add test.txt
$git commit -m "conflict fix"
$git status
就可以看到如下内容,证明冲突已经得到解决,并且工作空间是干净的。
nothing to commit, working tree clean
接下来我们可以使用如下命令查看合并历史情况:
git log --graph --pretty=oneline --abbrev-commit
* 875fe91 (HEAD -> master) conflict fix
|\
| * 3fbc131 (dev) dev branch commit
* | 542ceca master branch commit
|/
* 9b520e0 提交hello world
最后,合并之后记得可以删掉dev分支,大功告成
阅读全文
0 0
- Git学习笔记三:Git分支
- Git学习笔记(三) - 分支管理
- Git学习笔记04--Git分支
- Git学习笔记之分支
- Git 学习笔记 --- 分支管理
- Git学习笔记三
- Git学习笔记(三)
- Git 学习笔记三
- git学习三(本地分支)
- git学习之三:分支管理
- git 详解三 分支
- Git学习笔记(4)--分支
- 【Git学习笔记】创建和合并分支
- 【Git学习笔记】分支管理策略
- Git学习笔记5(分支管理)
- Git学习笔记(七)---分支管理
- Git学习笔记(分支管理)
- git的学习笔记(分支管理)
- Hadoop Yarn 框架原理及运作机制
- 字符串方法
- gerrit高可用部署
- SpringMVC 404问题解析
- Unicode 和 Utf-8的区别
- Git学习笔记三:Git分支
- 单节点安装OpenStack 之 安装环境准备
- LeetCode-Majority Element
- 【python 爬虫】识别网站所用技术
- 单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- 【2017西安网络赛】E Maximum Flow
- POJ
- Linux命令之cut
- 【Summary】——>Web组·大三·Week1