当前位置:   article > 正文

合并到dev_git lesson11 创建与合并分支并解决冲突

merge branch into dev

在版本回退里,我们已经知道,每次提交,Git都把他们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

0ee49d03cfbfbaa021cec1b4889c083d.png

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。


当我们创建新的分支dev时,Git新建了一个指针dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。

be15c153dff1bbaabccd3af47ae981b6.png

不过从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。

ca37a776757f23ed94636229acafffe1.png

假如我们在dev分支上把我们的工作完成了,就可以把dev合并到master上。怎么合并呢?

git checkout -b dev 创建dev分支并切换dev分支

git branch dev 创建dev分支

git checkout dev / git switch dev 切换到dev分支

git branch 查看当前分支

git merge dev 合并指定分支(dev)当前分支(master)

git branch -d dev 删除dev分支


准备新的分支feature1,我们继续开发:

git branch feature1 创建新的分支feature1

git switch feature1 切换到feature1分支上

修改readme.txt文件的最后一行:

 Creating a new branch is quick AND simple.

然后再feature1的分支上提交:

git add readme.txt

git commit -m “AND simple”

切换到master分支:

git checkout master

  1. $ git switch master
  2. Switched to branch 'master'
  3. // Git会提示我们当前master分支比远程master分支要超前一个提交。(此时说的就是feature1分支的那次addcommit
  4. Your branch is ahead of 'origin/master' by 1 commit.
  5. (use "git push" to publish your local commits)

Git会提示我们当前master分支比远程master分支要超前一个提交。(此时说的就是feature1分支的那次add和commit)

重要的地方来了:我们在master分支上吧readme.txt的最后一行也修改了,改为:

Creating a new branch is quick & simple.

然后继续提交:

git add readme.txt

git commit -m “& simple”

此时在feauture1的分支上文件的最后一句话是: Creating a new branch is quick AND simple. 而在主分支master上文件的最后一句话是:Creating a newbranch is quick&simple。此时如果我们使用合并分支则会出现冲突问题。

现在master分支和feature1分支都对readme.txt文件做了修改,变成了这样:

4b28ecd3460b0662198ef014f36cc60d.png

这种情况下,git无法“快速合并”,合并就会有冲突,我们试试看:

  1. $ git merge feature1
  2. Auto-merging readme.txt
  3. CONFLICT (content): Merge conflict in readme.txt
  4. Automatic merge failed; fix conflicts and then commit the result.

Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。

我们此时可以git status查看冲突情况。

  1. $ git status
  2. On branch master
  3. Your branch is ahead of 'origin/master' by 2 commits.
  4. (use "git push" to publish your local commits)
  5. You have unmerged paths.
  6. (fix conflicts and run "git commit")
  7. (use "git merge --abort" to abort the merge)
  8. Unmerged paths:
  9. (use "git add <file>..." to mark resolution)
  10. both modified: readme.txt
  11. no changes added to commit (use "git add" and/or "git commit -a")

果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改如下后保存:

Creating a new branch is quick and simple.

再提交:

  1. git add readme.txt
  2. git commit -m "conflict fixed"
  3. [master cf810e4] conflict fixed

现在,master分支和feature1分支变成了下图所示:

8adf6a069cea52db2dc58f279006549e.png

最后删除feature1分支

git branch -d feature1

我们发现其实冲突出现之后,只要从两个冲突的地方选择一方采取然后提交就可以了。可以在很多IDE(一般指集成开发环境)内部就可以很方便的查看冲突的地方,更清晰方便查看。

小结

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/409750
推荐阅读
相关标签
  

闽ICP备14008679号