Git - Gestione dei conflitti
Eseguire le modifiche in wchar_support Branch
Jerry sta lavorando al wchar_supportramo. Cambia il nome delle funzioni e dopo il test, salva le modifiche.
[[email protected] src]$ git branch
master
* wchar_support
[[email protected] src]$ git diff
Il comando precedente produce il seguente risultato:
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;
Dopo aver verificato il codice, conferma le modifiche.
[[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
Il comando precedente produrrà il seguente risultato:
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
Eseguire modifiche nel ramo principale
Nel frattempo, nel ramo master, Tom cambia anche il nome della stessa funzione e invia le sue modifiche al ramo master.
[[email protected] src]$ git branch
* master
[[email protected] src]$ git diff
Il comando precedente produce il seguente risultato:
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;
Dopo aver verificato la differenza, esegue il commit delle modifiche.
[[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
Il comando precedente produrrà il seguente risultato:
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
Sul wchar_supportramo, Jerry implementa la funzione strchr per una stringa di caratteri ampia. Dopo il test, si impegna e invia le modifiche al filewchar_support ramo.
[[email protected] src]$ git branch
master
* wchar_support
[[email protected] src]$ git diff
Il comando precedente produce il seguente risultato:
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;
Dopo la verifica, esegue il commit delle modifiche.
[[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
Il comando precedente produrrà il seguente risultato:
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
Affrontare i conflitti
Tom vuole vedere cosa sta facendo Jerry nel suo ramo privato, quindi cerca di estrarre le ultime modifiche dal file wchar_support branch, ma Git interrompe l'operazione con il seguente messaggio di errore.
[[email protected] src]$ git pull origin wchar_support
Il comando precedente produce il seguente risultato:
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.
Risolvi i conflitti
Dal messaggio di errore, è chiaro che c'è un conflitto in src / string_operations.c. Esegue il comando git diff per visualizzare ulteriori dettagli.
[[email protected] src]$ git diff
Il comando precedente produce il seguente risultato:
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;
Poiché sia Tom che Jerry hanno cambiato il nome della stessa funzione, Git è in uno stato di confusione e chiede all'utente di risolvere il conflitto manualmente.
Tom decide di mantenere il nome della funzione suggerito da Jerry, ma mantiene il commento da lui aggiunto così com'è. Dopo aver rimosso i marcatori di conflitto, git diff avrà questo aspetto.
[[email protected] src]$ git diff
Il comando precedente produce il seguente risultato.
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;
Poiché Tom ha modificato i file, deve prima eseguire il commit di queste modifiche e, successivamente, può eseguire il pull delle modifiche.
[[email protected] src]$ git commit -a -m 'Resolved conflict'
[master 6b1ac36] Resolved conflict
[[email protected] src]$ git pull origin wchar_support.
Tom ha risolto il conflitto, ora l'operazione pull avrà successo.