Gitコマンド入門::clone(fetch,pull,push,--allow-unrelated-histories)「第四十八回」
みなさんこんにちは! 前回の第四十七回目は、複数のGitHubリモートリポジトリーから、リモートブランチを、git fetch しましたね。git remote add では、originの他、新規にエイリアス、Rep0045という任意の名称も出てきましたけど、みなさんは、独自の環境で試せましたか?! 今日は実際に、その異なるリモートブランチをマージしてみますね!
前回の記事はこちらから!
git本家本元の情報はこちらから!
同じ祖先を持たないブランチはマージできません!(笑)
とはとはいうものの、--allow-unrelated-histories のオプションスイッチを付けると、マージできます! Googleで翻訳すると、unrelated histories = 無関係な歴史ですけど!
$ git branch -avv
main 1bd77d3 [origin/main] 1st
* temp_1 37607ba [origin/temp_1: ahead 2] merge
temp_2 1bd77d3 [origin/temp_1] 1st
remotes/Rep0045/main 3abef4b 1st
remotes/Rep0045/temp 3abef4b 1st <!-- ここを、temp_1 とマージ!
remotes/Rep0045/temp_1 3abef4b 1st
remotes/origin/main 1bd77d3 1st
remotes/origin/temp_1 1bd77d3 1st
このような私の環境に置いて、git merge Rep0045/temp_1 --allow-unrelated-histories
を、実行してみると・・・コンフィクトが、README.md で起こるものの編集して、add,commit 可能です!
$ git merge Rep0045/temp_1 --allow-unrelated-histories
CONFLICT (add/add): Merge conflict in README.md
Auto-merging README.md
Automatic merge failed; fix conflicts and then commit the result.
$ cat README.md
<<<<<<< HEAD
0046 pull push --prune
=======
0045 pull push
>>>>>>> Rep0045/temp_1
README.md がコンフィクトになりますので、編集して、add,commit しましょう!
$ git status
On branch temp_1
Your branch is up to date with 'origin/temp_1'.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: README.md
no changes added to commit (use "git add" and/or "git commit -a")
$ git add README.md
$ git commit -m "merge"
[temp_1 37607ba] merge
これで、無事にマージ完了です!
git log --graph で確認!
$ git log --graph
* commit 37607ba178bdffb427926313d0ce756064e81a1a (HEAD -> temp_1)
|\ Merge: 1bd77d3 3abef4b
| | Author: Makoto Shiozumi <shiozumi@esmile-hd.com>
| | Date: Tue Mar 16 16:35:55 2021 +0900
| |
| | merge
| |
| * commit 3abef4bdbbdb4455453d226965e7dd7b6cf771ef (Rep0045/temp_1, Rep0045/temp, Rep0045/main)
| Author: Makoto Shiozumi <shiozumi@esmile-hd.com>
| Date: Tue Mar 16 07:37:11 2021 +0900
|
| 1st
|
* commit 1bd77d3b36ae3fe2160ad452045d2817d4067ea0 (origin/temp_1, origin/main, temp_2, main)
Author: Makoto Shiozumi <shiozumi@esmile-hd.com>
Date: Tue Mar 16 10:22:45 2021 +0900
1st
// 第四十五回のリモートtemp_1ブランチと、
// 第四十六回のリモートtemp_1ブランチのマージ完了!
実際のところ、どのぐらいの頻度でこのようなことが発生するのかは、経験不足の私には予測もつきませんけど、ワンポイントでマージしたり、先日学習した、cherry-pick などの一部分のコミットを取り込む時には、先祖が異なるブランチの取り込みも、ありえそうですね。
毎度の話になりますけど、、、基本、同じファイルを複数の人数で編集するような仕様にしなければ、基本的に、マージコンフィクトは、ほぼ、起こりませんからね~ となると、部分的なコミットの取り込みや、祖先の異なるブランチのマージは、いわば、特定の機能追加するときのように、複数のファイルを既存の開発フォルダーに追加コピーするような使い方が出来る筈です。
それでは、今回はここまで、お疲れ様でした!
Discussion