【Git】競合(コンフリクト)実験から学ぶ
Git(バージョン管理ツール)を使って複数人で共同でプログラムを作成する場合、同じコードを意図せず同時に変更してしまうことがあります
これは、Gitでは想定済みで特に問題になることはありません
また、そのためのツールや処理の手順で解決出来ます
慣れてくればいいので、練習していきましょう
サンプル
最小コードで確認します
1つのファイルで、1行のConsole.WriteLineメソッドを作成します
競合サンプルなので、複数人が同時にこのファイルを更新した事例で考えてみましょう
開発者数
2人
開発者1
Work1というブランチを作成して、作業
開発者2
Work2というブランチを作成して、作業
バージョン管理のためのGit手順
GitHub(クラウド)とGitHub Desktopの関係
![](https://soft-rime.com/wp-content/uploads/2023/08/intro2_2.png)
引用元 サル先生のGit入門
Work1ブランチを作成
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.18.51.png)
Work2ブランチを作成
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.21.08.png)
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-12.38.54-1024x648.png)
Work1ブランチでコードを更新
Program.csファイルを変更後、GitHub Desktopでコミット
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.21.59.png)
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-12.35.08-1-1024x648.png)
Work1ブランチをMainブランチにマージ(統合)
GitHub Desktopでプッシュ後にプルリクエストを発行
承認者がWork1ブランチの内容を確認後にマージ(統合)
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.23.17.png)
Work2ブランチでコードを更新
Program.csファイルを変更後、GitHub Desktopでコミット
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.25.55.png)
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-12.38.42-1024x648.png)
Work2ブランチをMainブランチにマージ(統合)
Work1での作業と同じファイルを更新しているため、実際はMainにマージ(統合)する場合、どちらを採用すればいいのか選ぶ必要が出てきます
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.28.18.png)
競合(コンフリクト)の解決例
VisualStudio Codeをインストールしておきます
GitHub Desktopでデフォルトの競合対応のツールが含まれています
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-13.39.46.png)
処理サンプルの動画
Gitの更新状況をビジュアル(イラストのようなもの)で確認
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-12.53.11-1024x648.png)
誰かがMargeした場合に自分のブランチに最新のmaster(main)変更を取り込みたい場合
master(main)ブランチに変更します
Margeすぐの状態では、また、ローカルのmaster(main)は、クラウド側の状態が反映されていません
なので、master(main)ブランチに変更後、一度 Fetch
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-17.19.50-1024x870.png)
自分のブランチに変更します
![](https://soft-rime.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-21-16.49.16-1024x870.png)
ディスカッション
コメント一覧
まだ、コメントがありません