教你玩转Git-合并冲突

狂风中的少年 提交于 2019-11-30 13:39:13
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

$ git branch  * master  $ cat runoob.php

首先,我们创建一个叫做 change_site 的分支,切换过去,我们将 runoob.php 内容改为:

< ?php  echo 'runoob';  ?>

创建 change_site 分支:

$ git checkout -b change_site  Switched to a new branch 'change_site'  $ vim runoob.php  $ head -3 runoob.php  < ?php  echo 'runoob';  ?>  $ git commit -am 'changed the runoob.php'  [change_site 7774248] changed the runoob.php   1 file changed, 3 insertions(+)

将修改的内容提交到 change_site 分支中。 现在,假如切换回 master 分支我们可以看内容恢复到我们修改前的(空文件,没有代码),我们再次修改 runoob.php 文件。

$ git checkout master  Switched to branch 'master'  $ cat runoob.php  $ vim runoob.php    # 修改内容如下  $ cat runoob.php  < ?php  echo 1;  ?>  $ git diff  diff --git a/runoob.php b/runoob.php  index e69de29..ac60739 100644  --- a/runoob.php  +++ b/runoob.php  @@ -0,0 +1,3 @@  +< ?php  +echo 1;  +?>  $ git commit -am '修改代码'  [master c68142b] 修改代码   1 file changed, 3 insertions(+)

现在这些改变已经记录到我的 "master" 分支了。接下来我们将 "change_site" 分支合并过来。

http://www.51cto.com/it/news/2019/0923/14820.html
https://www.linuxprobe.com/books

$ git merge change_site  Auto-merging runoob.php  CONFLICT (content): Merge conflict in runoob.php  Automatic merge failed; fix conflicts and then commit the result.    $ cat runoob.php     # 代开文件,看到冲突内容  < ?php  <<<<<<< HEAD  echo 1;  =======  echo 'runoob';  >>>>>>> change_site  ?>

我们将前一个分支合并到 master 分支,一个合并冲突就出现了,接下来我们需要手动去修改它。

$ vim runoob.php   $ cat runoob.php  < ?php  echo 1;  echo 'runoob';  ?>  $ git diff  diff --cc runoob.php  index ac60739,b63d7d7..0000000  --- a/runoob.php  +++ b/runoob.php  @@@ -1,3 -1,3 +1,4 @@@    < ?php   +echo 1;  + echo 'runoob';    ?>

在 Git 中,我们可以用 git add 要告诉 Git 文件冲突已经解决

$ git status -s  UU runoob.php  $ git add runoob.php  $ git status -s  M  runoob.php  $ git commit  [master 88afe0e] Merge branch 'change_site'

现在我们成功解决了合并中的冲突,并提交了结果。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!