前回はGitローカル編というタイトルで個人のソースコード管理について紹介しました。今回はチーム開発におけるソースコード管理について紹介します。
前回同様、Udemyで人気の「ピーコックアンダーソン氏」が作成した「VisualStudioでGit&GitHubを使ってソースコードを管理する方法【C#】」を参考にし、私見を交えながらの説明です。
GitHubの役割
GitHubはチーム開発におけるソースコード管理に適したサービスで、クラウド上でソースコードを管理・共有できるシステムです。
各個人のソースコードをGitHubで管理する事により以下の事が可能となります。
- チーム内各個人のソースコード履歴管理ができる(誰が・いつ・何を変更したか)
- チームによる開発がスムーズに行える
- クラウド上でソースコードを安全に保存できる
- Web上でコードを閲覧・レビュー・コメントできる

GitHubを利用した開発の手順
GitHubに自分のアカウント登録する
- GitHub登録画面を表示
開発者のためのプラットフォーム
- 「GitHubに登録する」ボタンをクリックして以下を入力
- メールアドレス
- パスワード
- ユーザー名
- あなたの国/地域
- 質問に回答してロボットでない事を証明
- 「Create account」ボタンをクリック
- Codeの入力
- 登録したメールアドレスに届いているメールを見てCodeを入力する
- 「GitHubへのサインイン」
下記の「サインイン」画面が自動表示されるので必要事項を入力して「Sign in」をクリック

- GitHubのダッシュボードが表示されればアカウントの作成は完了

GitHubへのソースコード登録
- 下記の「加算」「減算」を行うC#プログラムを登録する

GitHub リモートリポジトリの作成
- メニュー「Git」→「Gitリポジトリの作成」

- 「GitHub」を選択
- アカウントで「GitHub」のアカウントを指定する
- 「GitHub」へのサインイン画面が表示されるのでサインインする
- リポジトリ名は変更しても良いがこのままとする
- 表示範囲を「Private」にする
- 作成者と指定したメンバーのみが使用可能となる
- 「public」はインターネット上のユーザーがアクセス可能
- 「Internal」は同じEnterprise内の全メンバーがアクセス可能
無料版のでは利用できない
- 「作成とプッシュ」をクリック

- メッセージも表示されますが、画面左下の「準備完了」をクリックしても「作成とプッシュ」が成功した事を確認できます

Visual Studioのアカウントを複数持っている場合
私の場合「作成とプッシュ」をクリックすると、下記のメッセージボックスが表示されました。使用したい「アカウント」を選択して「Continue」をクリックすると処理は続行できましたが、原因として考えられるのは、
- Visual Studioに複数アカウントが登録されている
- Visual StudioとGitHubアカウントのリンクが不一致又は不完全
Visual Studioのアカウントを調べてみると、「Kemmy-Git」とは別のアカウントで使用していました。Visual Studioを複数のアカウントで使用していたのが原因だったようです。

GitHubでのリポジトリとソースの確認
GitHubにサインインしてみると、「GitHub_Test_A」というリポジトリが「Private」で作成されており、「Form1.cs」のコードもプッシュされている事が確認できます。
- リポジトリ「GitHub_Test_A」

- 公開範囲は「Private」

- ソースの内容も確認できる

GitHub リモートリポジトリへのメンバー招待
本PCでC#プロジェクトを作成しGitHubのリモートリポジトリを作成しましたが、他のメンバーがGitHubからリポジトリ「GitHub_Test_A」を取り込む手順を紹介します。
招待者側の作業
- 自分のアカウントでGitHubに入り、Settings タブの「Collaborators」クリック

- Manage access の項目で、「Add people」をクリック

- 検索欄に招待したいメンバーのアカウントを入力すると候補者が表示される

- メンバーを選択して「Add Kemmy-it」をクリックすると、「Kemmy-it」通知が届く

- 「 Kemmy-it」からの回答待ち状態

招待される(Kemmy-it)側の作業
- 通知を開く

- ケミー-Gitからの招待通知を確認

- 通知を開いて「招待を承諾する」をクリック

- 招待された「Kemmy-it」のGitHub上で、リポジトリ「GitHub-Test_A」が参照できるようになる

GitHub リモートリポジトリからのソースコード取得
招待された「Kemmy-it」のローカルPCには、「GitHub_Test_A」のソースがないので、GitHubからソースを取得します。
- Visual Sutudio 2022 を起動し「リポジトリのクローン」をクリック

GitHubのどこから、ローカルPCのどこへクローンするかの設定を行います
- ①「GiuHub」を選択
- ②自身のアカウント(招待された側)である事を確認
- ③クローンするリポジトリのURLを指定
- ④ローカルPCのクローンするフォルダを指定
- ⑤「クローン」ボタンをクリック

- コンテンツに鍵マークの付いたリポジトリをローカルPCにクローンできました

GitHub リモートリポジトリへのソースコード変更の反映
Gitローカル環境ではソースを変更した後「コミット」すれば変更は反映されましたが、GitHubのリモートリポジトリに変更を適用させるには更に「プッシュ」という作業が必要です。
- ローカルリポジトリのソース変更(messageBox を追加)
- メニュー「表示」→「Git変更」→「すべてをコミット」でコミット

- メニュー「Git」→「ブランチの管理」を表示し「プッシュ」

- GitHubリモートリポジトリのソース内容に
- 「MessageBoxの追加」で変更したソースが反映されている

- 同期
- 「プッシュ」の右側にある「同期」は、「プル」と「プッシュ」を連続して実行する機能
他メンバーの変更内容を取得する
上記の変更内容を「Kemmy-it」が、自分のローカル環境に取り込む手順を紹介します。他のメンバーがソースを変更しているか確認「フェッチ」してから取り込み「プル」します。
- 「Kemmy-it」側でVisual studio 2022を起動し「GitHub_Test_A」リポジトリを開く
- メニュー「Git」→「ブランチの管理」でブランチの管理画面を表示
- 「フェッチ」をクリックしてソースに変更があるか確認
変更があると下記のように、受信(1)となり「MessageBoxの追加」の変更がある事が分かります

- 自分「Kemmy-it」のソースに変更内容を反映させる為、「プル」をクリックします
リポジトリが更新されたというメッセージと、「MessageBoxの追加」のコミットが「master」に反映された事が分かります

- 「Kemmy-it」のソースを確認すると「MessageBox」のソースが追加されています。

競合の解決方法
他のメンバーが修正して「プッシュ」したソースコードの同一箇所を、自分が修正して「プッシュ」するとどうなるでしょうか?
実際に試してみましょう。
- Kemmy-itのソースコードを下記の様に変更して、プッシュしておきます。


- Kemmy-Git側のソースコードを下記の様に変更し、コミットします

- 「メッセージボックスのテキスト変更」がコミットされました。

- そのままプッシュすると下記のエラーがでます。
「ローカルブランチ」が「リモートブランチ」の背後にあるため、リモートリポジトリにプッシュできません。プッシュする前にプルすることによりブランチを更新して下さい。
つまり、自分がプルした後に「リモートブランチ」に変更がされている為、プルしてからプッシュして下さいという意味です。「キャンセル」でエラーを閉じます。

それでは、プルしてみます。
プルすると、「GitHub_Test_A」リポジトリで競合が発生しました。競合を解決してから結果をコミットして下さい。というエラーが表示されます。

競合が解決していない箇所を調べます。「競合を解決」のリンクをクリックすると、Git変更画面に[両方変更]というクラスが表示されるので、そのクラスをクリックします。

GitHub側と、自分の変更内容が表示されるので、
- ①正しい変更をチェックする(両方でも良いがチェックの早いコードが上になる)
- ②選択の結果を確認して
- ③マージする

マージされた結果を確認したら、「すべてをコミット」

「コミット」しただけなので、GitHub上のソースは変更されていません。

その後、「競合をマージした結果」を「プッシュ」すると、変更内容がGitHubに反映されます。

【参考文献】
