🗝️
Gitコマンド入門::restore(merge,reset)「第十一回」
branch 分岐の次は、mergeマージで合体!
さあ~、今回は、いよいよマージですね! 自分専用にブランチを作成して、追加修正を行ったら、また、元の木に合流しないと、永遠に、mainには繁栄されませんからね~ というこで、gitのイメージ像として、<tree>=木に例えられていますが、実際は、再びファイルを合体するのが、一番のキモとなります。
そして元に戻すとき、自分だけの更新ならば、そんなに問題は起こりませんが、分岐元のmainに変更があったり、他のsubブランチがあったりすると、合体も複雑になって行き、容易ではなくなるので、どこまでも、難関だと思って置いて良いでしょう。(苦笑)
まあ~、ソフト開発に置いての基本中の基本ですが、なるべく同じファイルを複数人で編集しないようにするのが、コストを抑えることができる基本ですよ!
ちなみに前回の記事は、こちらです!
では、さっそく、subを、mainにマージ!
$ git checkout main
// main ブランチに移動してから、sub をマージする!
git branch
* main
sub
$ git merge sub
Already up to date. // mainも、subも全く同じなので、当然の結果ですね。
まず最初に、README.md に一行追加して、subに、commit -m "3rd sub"
$ git checkout sub
Switched to branch 'sub'
// まずは、subを選択
$ echo "# sub add" >> README.md
$ cat README.md
# test
# (^^)
# sub add
// ファイルの最後に、"#sub add" の文字列を追加!
$ git add README.md
// Staging Area に追加!
$ git commit -m "3rd sub"
[sub 446c2db] 3rd sub
1 file changed, 1 insertion(+)
// Repogitory に追加!
$ git log
commit 446c2dbbf658e27c36cc84aa9de21ebc20ffbb59 (HEAD -> sub)
Date: Fri Feb 12 12:31:57 2021 +0900
3rd sub
commit b8c6432555dcffd05d0973179add7bbb19d39d5d (main)
Date: Wed Feb 10 22:59:21 2021 +0900
2nd commit
commit a467fbdd7e989b224f388e048823068a0f122d51 (origin/main)
Date: Wed Feb 10 15:28:42 2021 +0900
first commit
では、もう一度、先ほどのコマンド実行!
$ git checkout main
$ git merge sub
Updating b8c6432..53e8165
Fast-forward
README.md | 1 +
1 file changed, 1 insertion(+)
$ git log
commit 53e8165e76c5e7c1e2e0111fc9c811923459ef42 (HEAD -> main, sub)
Date: Fri Feb 12 13:01:25 2021 +0900
3rd sub
commit b8c6432555dcffd05d0973179add7bbb19d39d5d
Date: Wed Feb 10 22:59:21 2021 +0900
2nd commit
commit a467fbdd7e989b224f388e048823068a0f122d51 (origin/main)
Date: Wed Feb 10 15:28:42 2021 +0900
first commit
マージ完了! メデタシメデタシ!
ブランチmainに、変更履歴が追加されていない場合は、あっさりマージできますね!
それでは、もう1回練習で繰り返してやってみましょう! ということで、元の状態に戻すには、以下のコマンドを実行してください。
ブランチsubの削除:git branch --delete sub
[1]
ブランチmainを元に戻すには、git reset --hard HEAD^
[2]
$ git branch --delete sub
Deleted branch sub (was 6b76b3d).
$ git branch
* main
// これで、sub が削除されました。
$ git reset --hard HEAD^
HEAD is now at b8c6432 2nd commit
$ git log
commit b8c6432555dcffd05d0973179add7bbb19d39d5d (HEAD -> main)
Date: Wed Feb 10 22:59:21 2021 +0900
2nd commit
commit a467fbdd7e989b224f388e048823068a0f122d51 (origin/main)
Date: Wed Feb 10 15:28:42 2021 +0900
first commit
// 3rd コミットが削除されて、2nd にHEADの状態の戻りましたね。
それでは、今回はここまで! お疲れ様でした!
Discussion