git分支概述
为了避免影响主线的开发,git分支应运而生。git分支可以把程序员的工作从开发主线分离出来。git分支被称为git的“必杀技”,它能够便捷地创建和切换分支。
git分支常用命令
git分支命令 | 功能 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看当前文件夹下的全部分支 |
git checkout 分支名 | 切换分支 |
git merge 分支 | 合并分支 |
git branch 分支名
创建分支
注:如果出现以下错误,则说明分支中的文件还未被commit,我们需要把文件提交(commit)至本地库才可以创建新的分支。
git branch -v
查看当前文件夹下的全部分支
git checkout 分支名
切换分支
分支由原先的master切换为test
查看test分支下的index.txt文件
查看master分支中index.txt文件
上述的操作是为了验证test分支的内容是从master分支复制而来
修改master分支中的内容
添加和提交修改后的内容
再次切换到test分支查看index.txt文件内容
发现test分支中的内容仍是上一次复制master分支的内容。
上述的操作是为了验证test分支并没有随着master的更新而更新
当然,我们也可以通过查看分支中的提交日志来判断两个分支是否相同
修改test分支内容
提交修改后的内容
切换到master分支并查看index.txt文件内容
上述操作是为了验证master分支不会随着test分支的改变而改变
git merge 分支名
将某一分支合并到当前分支上
此例中是将test分支合并到master分支上
但此时合并时出现了冲突
先查看一下此时本地库的状态
说明此时我们对不同分支的同一文件中的同一位置进行了修改,所以合并时产生了冲突。当git不能自动合并分支内容时,就需要手动合并两个分支中的内容。输入 vim index.txt
修改冲突的文件
我们需要决定保留哪些代码,然后再删除特定的字符,最后再进行保存操作。
再次将修改的文件添加到暂存区以及提交到本地库(此时提交时不能加文件名)
基于码云模拟开发环境中处理冲突
前置准备:一个码云远程库
远程库的内容
克隆同一远程仓库至两个不同文件夹
在不同文件夹下设置两个局部用户签名
1.在cxf文件夹下设置用户签名
- 在penrose文件夹下设置用户签名
修改cxf文件夹下index.txt的内容
添加和提交修改后的文件
将本地库修改的文件推送到远程库
修改penrose文件下index.txt的内容
添加和提交修改后的文件
将本地库修改的文件推送到远程库
此时出现合并冲突,因为cxf已经更新了远程库中的内容
此时我们需要先从远程库拉取最新的内容
此时显示自动合并index.txt文件,但是自动合并失败了,因为cxf和penrose对同一文件的同一位置进行了修改,此时git不能解决冲突,需要我们手动解决代码的冲突。
)]
保留自己需要的内容
添加和提交修改的内容
再次推送到远程库即可成功
查看远程库的内容是已经更新后的内容
总结
如果团队成员只是在原分支的不同位置添加代码,则不会出现冲突,git会进行代码的自动合并
但如果修改了同一位置的代码,则就会出现合并冲突。
如果远程库中的内容已经更新,但我们在工作时没有进行拉取操作。当我们把自己修改的代码推送到远程库时,就会被远程库拒绝。此时的解决办法是先从远程库拉取到新的代码。如果要解决合并冲突,一定要在自己的分支进行修改。冲突解决后,再把自己的代码推送到远程库。