跳转至

如何解决 git merger 冲突?


2018-07-31 by dongnan

目标

需要将 python分支 合并到 master分支,并且删除本地与远程的 python分支。

环境

当前全部分支

git branch -l

* master
php
python

处理思路

  • 由于环境特殊,这里需要先删除本地 master分支上的文件,然后再合并 python分支,合并过程中需要手动解决冲突问题。
  • 解决冲突后就可以 push master分支到远程 git 服务器,最后是收尾工作,删除本地及远程的 python分支。

步骤

删除文件

git rm -r php/

rm 'php/README.md'
rm 'php/tc.class.php'
rm 'php/tc.ini'
rm 'php/tc.php'

提交

git add .
git commit -m "更新: 合并分支,删除 master 文件."

[master 94c49c0] 更新: 合并分支,删除master 文件.
4 files changed, 335 deletions(-)
delete mode 100644 php/README.md
delete mode 100644 php/tc.class.php
delete mode 100644 php/tc.ini
delete mode 100644 php/tc.php

合并出现冲突

git merge python

冲突(重命名/删除):tclass.py 在 HEAD 中被删除,在 python 中被 重命名。tclass.py 在 python 中的版本被保留。
冲突(修改/删除):tc.ini 在 HEAD 中被删除,在 python 中被 修改。tc.ini 在 python 中的版本被保留。
冲突(修改/删除):README.md 在 HEAD 中被删除,在 python 中被 修改。README.md 在 python 中的版本被保留。
自动合并失败,修正冲突然后提交修正的结果。

冲突的文件

git status
省略....
要提交的变更:

新文件:       tc.py

未合并的路径:
(酌情使用 "git add/rm <文件>..." 标记解决方案)

由我们删除:  README.md
由我们删除:  tc.ini

由他们添加:  tclass.py

解决冲突

添加文件

git add .

提交

git commit -m ' 更新: 合并分支 python -> master.'
[master c4ae29b]  更新: 合并分支 python -> master.

状态

git status
位于分支 master您的分支领先 'origin/master' 共 9 个提交。
(使用 "git push" 来发布您的本地提交)

无文件要提交,干净的工作区

推送

git push

# 省略....
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 512 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 1 (delta 0)
To git@git.test.com:zongming/smartTC.git
80ece1e..c4ae29b  master -> master

删除分支

删除本地 python 分支

git branch -d python
已删除分支 python(曾为 58b837c)。

删除远程 python 分支

git push origin :python
To git@git.test.com:zongming/smartTC.git
- [deleted]         python

验证

git branch -a

* master
php
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/php
回到页面顶部