冲突的合并

如果两个分支的合并过程当中存在冲突,会出现下面结果:

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

可以使用 git status 查看冲突:

1
2
3
4
5
6
7
8
9
[master*]$ git status
index.html: needs merge
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# unmerged: index.html
#

任何包含未解决冲突的文件都会以未合并(unmerged)状态列出。

查看冲突的文件会如下这样:

1
2
3
4
5
6
7
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

可以看到 ======= 隔开的上半部分,是 HEAD(即master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 iss53 分支中的内容。

在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已
解决(resolved)。

分支管理

git branch 命令不加参数会列出所有分支:

1
2
3
4
$ git branch
iss53
* master
testing

master 分支前的 * 字符:它表示当前所在的分支。

若要查看各个分支最后一次 commit 信息,运行 git branch -v:

1
2
3
4
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes

远程分支

用(远程仓库名)/(分支名) 这样的形式表示远程分支。如 origin/master 分支。可以运行 git fetch origin 来进行同步。

可以运行 “git push (远程仓库名) (分支名):”,把本地分支推送到远程分支上。

【参考资料】

  1. proGit

—EOF—