Git - Manejo de conflictos
Realizar cambios en la rama wchar_support
Jerry está trabajando en el wchar_supportrama. Cambia el nombre de las funciones y después de probar, confirma sus cambios.
[[email protected] src]$ git branch
master
* wchar_support
[[email protected] src]$ git diff
El comando anterior produce el siguiente resultado:
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;
Después de verificar el código, confirma sus cambios.
[[email protected] src]$ git status -s
M string_operations.c
[[email protected] src]$ git add string_operations.c
[[email protected] src]$ git commit -m 'Changed function name'
[wchar_support 3789fe8] Changed function name
1 files changed, 1 insertions(+), 1 deletions(-)
[[email protected] src]$ git push origin wchar_support
El comando anterior producirá el siguiente resultado:
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 [email protected]:project.git
64192f9..3789fe8 wchar_support -> wchar_support
Realizar cambios en la rama principal
Mientras tanto, en la rama principal, Tom también cambia el nombre de la misma función y envía sus cambios a la rama principal.
[[email protected] src]$ git branch
* master
[[email protected] src]$ git diff
El comando anterior produce el siguiente resultado:
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;
Después de verificar la diferencia, confirma sus cambios.
[[email protected] src]$ git status -s
M string_operations.c
[[email protected] src]$ git add string_operations.c
[[email protected] 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(-)
[[email protected] src]$ git push origin master
El comando anterior producirá el siguiente resultado:
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 [email protected]:project.git
64192f9..ad4b530 master -> master
Sobre el wchar_supportrama, Jerry implementa la función strchr para una cadena de caracteres amplia. Después de la prueba, compromete y empuja sus cambios alwchar_support rama.
[[email protected] src]$ git branch
master
* wchar_support
[[email protected] src]$ git diff
El comando anterior produce el siguiente resultado:
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;
Después de verificar, confirma sus cambios.
[[email protected] src]$ git status -s
M string_operations.c
[[email protected] src]$ git add string_operations.c
[[email protected] 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(-)
[[email protected] src]$ git push origin wchar_support
El comando anterior producirá el siguiente resultado:
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 [email protected]:project.git
3789fe8..9d201a9 wchar_support -> wchar_support
Abordar los conflictos
Tom quiere ver qué está haciendo Jerry en su rama privada, por lo que intenta extraer los últimos cambios de la wchar_support branch, pero Git aborta la operación con el siguiente mensaje de error.
[[email protected] src]$ git pull origin wchar_support
El comando anterior produce el siguiente resultado:
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.
Resolver conflictos
A partir del mensaje de error, queda claro que hay un conflicto en src / string_operations.c. Ejecuta el comando git diff para ver más detalles.
[[email protected] src]$ git diff
El comando anterior produce el siguiente resultado:
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;
Como Tom y Jerry cambiaron el nombre de la misma función, Git está en un estado de confusión y le pide al usuario que resuelva el conflicto manualmente.
Tom decide mantener el nombre de función sugerido por Jerry, pero mantiene el comentario agregado por él, tal como está. Después de eliminar los marcadores de conflicto, git diff se verá así.
[[email protected] src]$ git diff
El comando anterior produce el siguiente resultado.
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;
Como Tom ha modificado los archivos, primero debe realizar estos cambios y, a continuación, puede realizar los cambios.
[[email protected] src]$ git commit -a -m 'Resolved conflict'
[master 6b1ac36] Resolved conflict
[[email protected] src]$ git pull origin wchar_support.
Tom ha resuelto el conflicto, ahora la operación de extracción se realizará correctamente.