04_分支
2020-04-06 本文已影响0人
雨点的光辉
一、分支介绍
引用:分支介绍
二、分支操作
1.新建分支
- 创建新分支:
git branch 分支名
- 切换到新分支:
git checkout 分支名
注意:
1.上面两个命令也可以合成为一个命令:git checkout -b 分支名
2.如果是本地仓库在一个新文件夹里面,先commit之后才会真正建立master分支,此时才可以创建其它分支。
2.本地新建分支并拉取远程分支内容到本地
- 创建本地分支:
git branch 分支名
- 拉取远程分支内容:
git pull origin/分支名
注意:如果建立了本地分支与远程分支的映射关系(或者为跟踪关系track),直接使用git pull拉取远程分支。
- 关联远程分支与本地分支:
git branch --set-upstream-to origin/分支名
注意:为建立本地分支与远程分支的映射关系(或者为跟踪关系track)。这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。
引用:建立分支关联关系
3.查看分支的不同
查看本地分支的不同
序号 | 描述 | 含义 |
---|---|---|
1 | git diff branch1 branch2 --stat | 显示出branch1和branch2中差异的部分 |
2 | git diff branch1 branch2 文件名 | 显示指定文件的详细差异 |
3 | git diff branch1 branch2 | 显示出所有有差异的文件的详细差异 |
4 | git log branch1 ^branch2 | 查看branch1分支有,而branch2中没有的log |
5 | git log branch1..branch2 | 查看branch2中比branch1中多提交了哪些内容,注意:中间是两个点 |
6 | git log branch1...branch2 | ------ |
7 | git log --lefg-right branch1...branch2 | ------ |
查看本地分支与远程分支的不同
- 更新本地的远程分支:
git fetch origin branch1
,会创建一个名为 FETCH_HEAD 的分支,对应远程服务器的branch1分支,该分支不存在工作区。
注意:在这种情况下, 不会在本地创建本地远程分支。 - 查看当前分支对应远程分支的更新信息:
git log -p FETCH_HEAD
- 查看本地与远程的差集 (显示远程有而本地没有的commit信息):
git log master..origin/master
- 对比不同:
git diff master origin/master --stat
- 合并:
git merge FETCH_HEAD
4.分支合并
- master分支落后dev分支,想把dev分支合并到master分支,切换到master分支,使用
git merge dev
直接合并,如果有冲突就解决。 - master分支落后dev分支,想把master分支合并到dev分支,则合并无效,因为合并默认是把超前分支内容合并到落后分支中。
-
分支合并包括如下情况:
-
当前分支没有进行提交,一直保持从新建另一分支时原始状态,另一分支提交过,如:从master分支中新建dev分支,新建之后一直在dev分支开发,则切换到master分支使用
git merge dev
,master分支的内容就是dev分支内容一样。 -
当前分支进行过提交,另一分支提交过,如:从master分支中新建dev和dev2分支,新建之后分别在dev和dev2分支开发,则切换到dev分支使用
git merge dev2
,dev分支的内容如下显示:
1.其他分支对文件做过操作(修改内容、删除文件),当前分支对该文件没有操作,对其他文件有操作,合并之后则只把其他分支被操作过文件(当前分支对这些文件没有操作)的内容合并到当前分支,当前分支被操作过文件的内容不会变,依旧存在。两个分支都没有操作过的文件不会合并。
-
当前分支没有进行提交,一直保持从新建另一分支时原始状态,另一分支提交过,如:从master分支中新建dev分支,新建之后一直在dev分支开发,则切换到master分支使用
直接合并(修改不同文件)
-
分支1修改A文件或者新增A文件,分支2修改B文件或者新增B文件,分支2可以直接把分支1的分支内容合并到分支2,切换到分支2上后直接使用
git merge 分支1
- 例子:电脑1push本地代码到远程分支,电脑2commit但是没有push,怎么把远程分支拉取下来,同时不会修改电脑2的本地代码
- 电脑1修改A文件或者新增A文件,电脑2修改B文件或者新增B文件,电脑2可以直接把电脑1的分支内容合并到电脑2,操作为电脑2本地新建分支pc_a,拉取电脑1的的代码到分支pc_a上,电脑2的本地分支pc_b,切换到分支pc_b,使用
git merge pc_a
- 电脑1修改A文件或者新增A文件,电脑2修改B文件或者新增B文件,电脑2可以直接把电脑1的分支内容合并到电脑2,操作为电脑2本地新建分支pc_a,拉取电脑1的的代码到分支pc_a上,电脑2的本地分支pc_b,切换到分支pc_b,使用
合并出现冲突(修改同一文件)
两个分支改变了同一个文件,合并时就会产生冲突。发生这种情况时,Git将无法确定要使用哪个版本。Git会提示哪些文件存在冲突,使用vi命令进入冲突文件修改文件内容,文件显示如下:
- <<<<<<<:冲突标记,冲突开始于此行之后。
- =======:将一个分支的更改与另一个分支中的更改分开。
- >>>>>>>:冲突线的结束。
- 可以保留或者修改或者写一个全新的代码,编辑完成之后删除标记(<<<<<<、=======、>>>>>>>)
解决冲突后合并
git add .
git commit -m "xx"
- add和commit之后就自动切回到之前合并的分支上,合并结束。