Git合并

Git
下面我们通过演示一个实例来讲解怎样进行合并。假如我们存在两个分支master和dev。我们在dev下面创建一个dev.txt文件(提交),然后进入master分支,将dev分支合并到master。

下面我们通过演示一个实例来讲解怎样进行合并。假如我们存在两个分支master和dev。我们在dev下面创建一个dev.txt文件(提交),然后进入master分支,将dev分支合并到master。具体操作如下:

# 查看当前系统分支
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ git branch
  dev
* master
 
# 切换到dev分支
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ git checkout dev
Switched to branch 'dev'
 
# 在dev分支下面常见dev.txt文件
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ echo "world" > dev.txt
 
# 提交dev.txt文件
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ git add .
warning: LF will be replaced by CRLF in dev.txt.
The file will have its original line endings in your working directory.
 
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ git commit -m "test merge"
[dev b742a56] test merge
 1 files changed, 1 insertions(+)
 create mode 100644 dev.txt
 
# 切换回master分支
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ git checkout master
Switched to branch 'master'
 
# 将dev分支合并到master分支
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ git merge dev
Updating 196190b..b742a56
Fast-forward
 dev.txt    | 1 +
 1 files changed, 1 insertions(+)
 create mode 100644 dev.txt

上面实例是在master分支和dev分支不存在文件同名(即冲突的情况下),如果master和dev下面都存在一个dev.txt文件会怎么样呢?我们基于上面的实例,分别在master和dev分支修改dev.txt文件的内容且提交到当前分支,然后再次将dev分支合并到master分支。具体操作如下:

# 在master分支下面修改dev.txt文件且提交
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ echo "master update" >> dev.txt
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ git commit -a -m "update dev.txt"
warning: LF will be replaced by CRLF in dev.txt.
The file will have its original line endings in your working directory.
[master bad32ab] update dev.txt
 1 file changed, 1 insertion(+)
 
# 切换到dev分支,并且修改dev.txt文件,然后提交修改
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ git checkout dev
Switched to branch 'dev'
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ echo "dev update" >> dev.txt
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ git commit -a -m "update dev.txt"
warning: LF will be replaced by CRLF in dev.txt.
The file will have its original line endings in your working directory.
[dev e23c966] update dev.txt
 1 file changed, 1 insertion(+)
 
# 回到master分支,将dev分支合并到master分支,此时将会抛出错误
# 因为我们分别在master和dev分支下面修改了dev.txt文件,文件冲突了
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (dev)
$ git checkout master
Switched to branch 'master'
Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master)
$ git merge dev
Auto-merging dev.txt
CONFLICT (content): Merge conflict in dev.txt
Automatic merge failed; fix conflicts and then commit the result.

上面合并出现了冲突错误,此时dev.txt文件的内容该是什么样子的呢?我们使用vim编辑器进入dev.txt文件查看,如下:

Administrator@lenovoPC MINGW32 ~/Desktop/git/git-demo (master|MERGING)
$ cat dev.txt
world
2017-03-23 22:45:52
<<<<<<< HEAD                        # 当前分支(HEAD中保存的是当前分支信息)master
master update
=======                         # 两个分子修改东西的分隔符(上是当前分支,下面是dev)
dev update
>>>>>>> dev                     # dev分支

手动合并,使用VIM等编辑器将你要的留下,不要的删除。如下:

world
2017-03-23 22:45:52
master update
dev update

合并后的文件就如上面。

如果在胜利前却步,往往只会拥抱失败;如果在困难时坚持,常常会获得新的成功。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号