読者です 読者をやめる 読者になる 読者になる

はわわーっ

はわわわわっ

[git] gitのお勉強 - その5

git

[git] gitのお勉強 - その4 - yomi322 blogの続き。

まず、新しいブランチを作って新しいファイルを追加してコミットする。

% git checkout -b while
Switched to a new branch 'while'
% cat while.c
#include <stdio.h>

int main(void) {
    int i = 0;
    while (i < 10) {
        printf("i = %d\n", i);
        i++;
    }

    return 0;
}

% git add while.c
% git commit -m "add while.c"
[while f061737] add while.c
 1 files changed, 12 insertions(+), 0 deletions(-)
 create mode 100644 while.c

新しくwhile2というブランチを作る。そして、移動する前に今のwhileブランチでファイルに変更を加えてコミットする。

% git branch while2
% git diff while.c
diff --git a/while.c b/while.c
index 78698be..80bdc7e 100644
--- a/while.c
+++ b/while.c
@@ -3,7 +3,7 @@
 int main(void) {
     int i = 0;
     while (i < 10) {
-        printf("i = %d\n", i);
+        printf("i = %d\n", i * 2);
         i++;
     }
 
% git commit -a -m "print i * 2"
[while e94d432] print i * 2
 1 files changed, 1 insertions(+), 1 deletions(-)

それから、while2ブランチに移って同じファイルに別な変更を加えてコミット。

% git checkout while2
Switched to branch 'while2'
diff --git a/while.c b/while.c
index 78698be..47296d7 100644
--- a/while.c
+++ b/while.c
@@ -3,7 +3,7 @@
 int main(void) {
     int i = 0;
     while (i < 10) {
-        printf("i = %d\n", i);
+        printf("i = %d\n", i * i);
         i++;
     }
 
% git commit -a -m "print i * i"
[while2 1defe28] print i * i
 1 files changed, 1 insertions(+), 1 deletions(-)

これでマージするとwhileとwhile2のブランチで競合が起こる。

% git checkout while
Switched to branch 'while'
% git merge while2
Auto-merging while.c
CONFLICT (content): Merge conflict in while.c
Automatic merge failed; fix conflicts and then commit the result.
% cat while.c
#include <stdio.h>

int main(void) {
    int i = 0;
    while (i < 10) {
<<<<<<< HEAD
        printf("i = %d\n", i * 2);
=======
        printf("i = %d\n", i * i);
>>>>>>> while2
        i++;
    }

    return 0;
}

あとは、競合している部分を直してコミットしなおす。

% cat while.c
#include <stdio.h>

int main(void) {
    int i = 0;
    while (i < 10) {
        printf("i = %d\n", i * i);
        i++;
    }

    return 0;
}

% git commit
[while 94dc1d7] Merge branch 'while2' into while
% git log -1
commit 5d5c2d15c160586933d18314ee679ac52c4cd85f
Merge: efa07d9 1defe28
Author: yomi322 <yomi322@gmail.com>
Date:   Thu Apr 26 11:49:22 2012 +0900

    Merge branch 'while2' into while
    
    Conflicts:
        while.c

マージするのが複雑なときはgit mergetoolでツールを立ち上げてくれる。

今回はこれでおしまい。