We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一般情况下,出现分支的场景有如下:
具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称
如果两个分支中分别修改了不同文件中的部分,是不会产生冲突,直接合并即可
应用在命令中,就是push、pull、stash、rebase等命令下都有可能产生冲突情况,从本质上来讲,都是merge和patch(应用补丁)时产生冲突
push
pull
stash
rebase
merge
patch
在本地主分值master创建一个a.txt文件,文件起始位置写上master commit,如下:
master
a.txt
master commit
然后提交到仓库:
创建一个新的分支featurel1分支,并进行切换,如下:
featurel1
git checkout -b featurel1
然后修改a.txt文件首行文字为 featurel commit,然后添加到暂存区,并开始进行提交到仓库:
featurel commit
然后通过git checkout master切换到主分支,通过git merge进行合并,发现不会冲突
git checkout master
git merge
此时a.txt文件的内容变成featurel commit,没有出现冲突情况,这是因为git在内部发生了快速合并
git
如果当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个“快速向前”(fast forward)操作 git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支
如果当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个“快速向前”(fast forward)操作
git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支
如果此时切换到featurel分支,将文件的内容修改成featrue second commit,然后提交到本地仓库
featurel
featrue second commit
然后切换到主分支,如果此时在a.txt文件再次修改,修改成mastet second commit,然后再次提交到本地仓库
mastet second commit
此时,master分支和feature1分支各自都分别有新的提交,变成了下图所示:
feature1
这种情况下,无法执行快速合并,只能试图把各自的修改合并起来,但这种合并就可能会有冲突
现在通过git merge featurel进行分支合并,如下所示:
git merge featurel
从冲突信息可以看到,a.txt发生冲突,必须手动解决冲突之后再提交
而git status同样可以告知我们冲突的文件:
git status
打开a.txt文件,可以看到如下内容:
git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容:
<<<<<<<
=======
>>>>>>>
现在要做的事情就是将冲突的内容进行更改,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决然后再提交:
git add
Git
此时master分支和feature1分支变成了下图所示:
使用git log命令可以看到合并的信息:
git log
当Git无法自动合并分支时,就必须首先解决冲突,解决冲突后,再提交,合并完成
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一、是什么
一般情况下,出现分支的场景有如下:
具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称
如果两个分支中分别修改了不同文件中的部分,是不会产生冲突,直接合并即可
应用在命令中,就是
push
、pull
、stash
、rebase
等命令下都有可能产生冲突情况,从本质上来讲,都是merge
和patch
(应用补丁)时产生冲突二、分析
在本地主分值
master
创建一个a.txt
文件,文件起始位置写上master commit
,如下:然后提交到仓库:
创建一个新的分支
featurel1
分支,并进行切换,如下:然后修改
a.txt
文件首行文字为featurel commit
,然后添加到暂存区,并开始进行提交到仓库:然后通过
git checkout master
切换到主分支,通过git merge
进行合并,发现不会冲突此时
a.txt
文件的内容变成featurel commit
,没有出现冲突情况,这是因为git
在内部发生了快速合并如果此时切换到
featurel
分支,将文件的内容修改成featrue second commit
,然后提交到本地仓库然后切换到主分支,如果此时在
a.txt
文件再次修改,修改成mastet second commit
,然后再次提交到本地仓库此时,
master
分支和feature1
分支各自都分别有新的提交,变成了下图所示:这种情况下,无法执行快速合并,只能试图把各自的修改合并起来,但这种合并就可能会有冲突
现在通过
git merge featurel
进行分支合并,如下所示:从冲突信息可以看到,
a.txt
发生冲突,必须手动解决冲突之后再提交而
git status
同样可以告知我们冲突的文件:打开
a.txt
文件,可以看到如下内容:git
用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容:现在要做的事情就是将冲突的内容进行更改,对每个文件使用
git add
命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git
就会将它们标记为冲突已解决然后再提交:此时
master
分支和feature1
分支变成了下图所示:使用
git log
命令可以看到合并的信息:三、总结
当
Git
无法自动合并分支时,就必须首先解决冲突,解决冲突后,再提交,合并完成解决冲突就是把
Git
合并失败的文件手动编辑为我们希望的内容,再提交参考文献
The text was updated successfully, but these errors were encountered: