【Git】競合(コンフリクト)実験から学ぶ

Git(バージョン管理ツール)を使って複数人で共同でプログラムを作成する場合、同じコードを意図せず同時に変更してしまうことがあります
これは、Gitでは想定済みで特に問題になることはありません
また、そのためのツールや処理の手順で解決出来ます
慣れてくればいいので、練習していきましょう

サンプル

最小コードで確認します
1つのファイルで、1行のConsole.WriteLineメソッドを作成します
競合サンプルなので、複数人が同時にこのファイルを更新した事例で考えてみましょう

開発者数

2人

開発者1

Work1というブランチを作成して、作業

開発者2

Work2というブランチを作成して、作業

バージョン管理のためのGit手順

GitHub(クラウド)とGitHub Desktopの関係

https://backlog.com/ja/git-tutorial/intro/02/
引用元 サル先生のGit入門

Work1ブランチを作成

Work2ブランチを作成

Work1ブランチでコードを更新

Program.csファイルを変更後、GitHub Desktopでコミット

Work1ブランチをMainブランチにマージ(統合)

GitHub Desktopでプッシュ後にプルリクエストを発行

承認者がWork1ブランチの内容を確認後にマージ(統合)

Work2ブランチでコードを更新

Program.csファイルを変更後、GitHub Desktopでコミット

Work2ブランチをMainブランチにマージ(統合)

Work1での作業と同じファイルを更新しているため、実際はMainにマージ(統合)する場合、どちらを採用すればいいのか選ぶ必要が出てきます

競合(コンフリクト)の解決例

VisualStudio Codeをインストールしておきます
GitHub Desktopでデフォルトの競合対応のツールが含まれています

処理サンプルの動画

Gitの更新状況をビジュアル(イラストのようなもの)で確認

誰かがMargeした場合に自分のブランチに最新のmaster(main)変更を取り込みたい場合

master(main)ブランチに変更します

Margeすぐの状態では、また、ローカルのmaster(main)は、クラウド側の状態が反映されていません
なので、master(main)ブランチに変更後、一度 Fetch

自分のブランチに変更します