【深入Git开发(Git冲突处理操作详细介绍)】上一章Git教程请查看:Git分支管理和操作
这一章中我们开始详细介绍Git冲突处理的操作。
1、在wchar_support分支中执行更改userB正在处理wchar_support分支,他更改了函数的名称,并在测试之后提交更改。
$ git branch
master
* wchar_support
$ git diff
上面的命令产生了下面的结果:
diff --git a/src/string_operations.c b/src/string_operations.c
--- a/src/string_operations.c
+++ b/src/string_operations.c#include <
stdio.h>
#include <
wchar.h>
-size_t w_strlen(const wchar_t *s)
+size_t my_wstrlen(const wchar_t *s)
{
const wchar_t *p = s;
在验证代码之后他提交更改。
$ git status -s
M string_operations.c$ git add string_operations.c$ git commit -m "更改函数名称"$ git push origin wchar_support
上述命令将产生下列结果:
Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
2、在主分支中执行更改同时在主分支中,userA也更改了相同函数的名称,并将其更改推给主分支。
$ git branch
* master
$ git diff
上面的命令产生了下面的结果:
diff --git a/src/string_operations.c b/src/string_operations.c
#include <
stdio.h>
#include <
wchar.h>
-size_t w_strlen(const wchar_t *s)
+size_t my_wc_strlen(const wchar_t *s)
{
const wchar_t *p = s;
在验证diff之后,他提交更改。
$ git status -s
M string_operations.c$ git add string_operations.c$ git commit -m "将函数名从w_strlen改为my_wc_strlen"$ git push origin master
上述命令将产生下列结果:
Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 470 bytes, done.
在wchar_support分支上,userB实现了用于宽字符串的strchr函数,测试之后他提交并将更改推到wchar_support分支。
$ git branch
master
* wchar_support
$ git diff
在验证之后他提交更改。
$ git status -s
M string_operations.c$ git add string_operations.c$ git commit -m "为宽字符串添加strchr函数"$ git push origin wchar_support
3、处理冲突userA想看看userB在他的私有分支上做了什么,所以他试图从wchar_support分支中获取最新的更改,但是Git使用以下错误消息中止了操作。
$ git pull origin wchar_support
上面的命令产生以下结果:
Auto-merging src/string_operations.c
CONFLICT (content): Merge conflict in src/string_operations.c
Automatic merge failed;
fix conflicts and then commit the result.
4、解决冲突从错误消息可以看出,src/string_operations.c中存在冲突,他可以运行git diff命令来查看更多细节。
$ git diff
由于userA和userB更改了同一个函数的名称,Git处于混乱状态,它要求用户手动解决冲突。
userA决定保留userB建议的函数名,但保留他添加的注释,删除冲突标记后,git diff将如下所示。
diff --cc src/string_operations.c
diff --cc src/string_operations.c
由于UserA已经修改了文件,所以他必须先提交这些更改,然后才能拉出更改。
$ git commit -a -m "解决冲突"
[master xx] Resolved conflict$ git pull origin wchar_support.
UserA已经解决了冲突,现在pull操作将会成功。
推荐阅读
- 深入Git开发(Git多平台处理以及Github在线仓库详细操作)
- 深入Git开发(Git分支管理和操作详细介绍)
- 深入Git开发(Git标签tag操作和补丁patch操作详解)
- 深入Git开发(Git修复错误详细操作步骤)
- 深入Git开发(Git仓库之stash操作、移动、rename和删除操作详解)
- 深入Git开发(Git远程仓库之push推送和update更新操作详解)
- 深入Git开发(Git更改操作之执行更改、查看更改和提交更改)
- 深入Git开发(Git生命周期和Git远程仓库操作详解)
- 无人的天空(最美丽的支线任务)