Git – 处理冲突

Git – 处理冲突

执行 wchar_support 分支的变更

Jerry 在 wchar_support 分支上工作。他修改了函数的名称,并在测试后提交了他的修改。

[jerry@CentOS src]git branch
 master
* wchar_support
[jerry@CentOS src] git diff

上述命令产生了以下结果—

diff --git a/src/string_operations.c b/src/string_operations.c
index 8fb4b00..01ff4e0 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,7 +1,7 @@
#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;

在验证了代码之后,他提交了他的修改。

[jerry@CentOS src]git status -s
M string_operations.c

[jerry@CentOS src] git add string_operations.c

[jerry@CentOS src]git commit -m 'Changed function name'
[wchar_support 3789fe8] Changed function name
1 files changed, 1 insertions(+), 1 deletions(-)

[jerry@CentOS src] git push origin wchar_support

上述命令将产生以下结果 –

Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 409 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To gituser@git.server.com:project.git
64192f9..3789fe8 wchar_support -> wchar_support

在主分支中执行更改

同时,在主干分支中,Tom也修改了同一个函数的名称,并将他的修改推送到主干分支。

[tom@CentOS src]git branch
* master
[tom@CentOS src] git diff

上述命令产生了以下结果—

diff --git a/src/string_operations.c b/src/string_operations.c
index 8fb4b00..52bec84 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,7 +1,8 @@
#include <stdio.h>
#include <wchar.h>
-size_t w_strlen(const wchar_t *s)
+/* wide character strlen fucntion */
+size_t my_wc_strlen(const wchar_t *s)
{
   const wchar_t *p = s;

在验证了diff之后,他提交了他的修改。

[tom@CentOS src]git status -s
M string_operations.c

[tom@CentOS src] git add string_operations.c

[tom@CentOS src]git commit -m 'Changed function name from w_strlen to my_wc_strlen'
[master ad4b530] Changed function name from w_strlen to my_wc_strlen
1 files changed, 2 insertions(+), 1 deletions(-)

[tom@CentOS src] git push origin master

上述命令将产生以下结果 –

Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 470 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To gituser@git.server.com:project.git
64192f9..ad4b530 master -> master

wchar_support 分支上,Jerry 实现了 strchr 函数,用于处理宽字符串。测试后,他提交并推送了他的修改到 wchar_support 分支。

[jerry@CentOS src]git branch
master
* wchar_support
[jerry@CentOS src] git diff

上述命令产生了以下结果—

diff --git a/src/string_operations.c b/src/string_operations.c
index 01ff4e0..163a779 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,6 +1,16 @@
#include <stdio.h>
#include <wchar.h>
+wchar_t *my_wstrchr(wchar_t *ws, wchar_t wc)
+
{
   +
   while (*ws) 
   {
      +
      if (*ws == wc)
      +
      return ws;
      +
      ++ws;
      + 
   }
   + return NULL;
   +
}
+
size_t my_wstrlen(const wchar_t *s)
{
   const wchar_t *p = s;

核实后,他提交了他的修改。

[jerry@CentOS src]git status -s
M string_operations.c

[jerry@CentOS src] git add string_operations.c

[jerry@CentOS src]git commit -m 'Addded strchr function for wide character string'
[wchar_support 9d201a9] Addded strchr function for wide character string
1 files changed, 10 insertions(+), 0 deletions(-)

[jerry@CentOS src] git push origin wchar_support

上述命令将产生以下结果 –

Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 516 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To gituser@git.server.com:project.git
3789fe8..9d201a9 wchar_support -> wchar_support

应对冲突

Tom想看看Jerry在他的私有分支上做了什么,所以他试图从 wchar_support 分支上拉出最新的修改,但Git以如下错误信息中止了该操作。

[tom@CentOS src]$ git pull origin wchar_support

上述命令产生了以下结果—

remote: Counting objects: 11, done.
63Git Tutorials
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (8/8), done.
From git.server.com:project
* branch
wchar_support -> FETCH_HEAD
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.

解决冲突

从错误信息中可以看出,src/string_operations.c中存在一个冲突。他运行git diff命令来查看进一步的细节。

[tom@CentOS src]$ git diff

上述命令产生了以下结果—

diff --cc src/string_operations.c
index 52bec84,163a779..0000000
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@@ -1,8 -1,17 +1,22 @@@
#include <stdio.h>
#include <wchar.h>
++<<<<<<< HEAD
+/* wide character strlen fucntion */
+size_t my_wc_strlen(const wchar_t *s)
++=======
+ wchar_t *my_wstrchr(wchar_t *ws, wchar_t wc)
+
{
   +
   +
   while (*ws) 
   {
      if (*ws == wc)
      +
      return ws;
      +
      ++ws;
      + 
   }
   + return NULL;
   +
}
+
+ size_t my_wstrlen(const wchar_t *s)
++>>>>>>>9d201a9c61bc4713f4095175f8954b642dae8f86
{
   const wchar_t *p = s;

由于Tom和Jerry都改变了同一个函数的名称,Git陷入了混乱,它要求用户手动解决这个冲突。

汤姆决定保留杰瑞建议的函数名,但他保留了杰瑞添加的注释,就像现在这样。删除冲突标记后,git diff 会变成这样。

[tom@CentOS src]$ git diff

上述命令产生的结果如下。

diff --cc src/string_operations.c
diff --cc src/string_operations.c
index 52bec84,163a779..0000000
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@@ -1,8 -1,17 +1,18 @@@
#include <stdio.h>
#include <wchar.h>
+ wchar_t *my_wstrchr(wchar_t *ws, wchar_t wc)
+
{
   +
   while (*ws) 
   {
      +
      if (*ws == wc)
      +
      return ws;
      +
      ++ws;
      + 
   }
   + return NULL;
   +
}
+
+/* wide character strlen fucntion */
- size_t my_wc_strlen(const wchar_t *s)
+ size_t my_wstrlen(const wchar_t *s)
{
   const wchar_t *p = s;

由于汤姆已经修改了文件,他必须先提交这些修改,然后才能拉出这些修改。

[tom@CentOS src]git commit -a -m 'Resolved conflict'
[master 6b1ac36] Resolved conflict

[tom@CentOS src] git pull origin wchar_support.

汤姆已经解决了冲突,现在拉动操作将会成功。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程