【Visual Studio (2022)】Git/GitHubを使用したソース管理(GitHubリモート編)

前回はGitローカル編というタイトルで個人のソースコード管理について紹介しました。今回はチーム開発におけるソースコード管理について紹介します。

前回同様、Udemyで人気の「ピーコックアンダーソン氏」が作成した「VisualStudioでGit&GitHubを使ってソースコードを管理する方法【C#】」を参考にし、私見を交えながらの説明です。

GitHubの役割

GitHubはチーム開発におけるソースコード管理に適したサービスで、クラウド上でソースコードを管理・共有できるシステムです。

各個人のソースコードをGitHubで管理する事により以下の事が可能となります。

  1. チーム内各個人のソースコード履歴管理ができる(誰が・いつ・何を変更したか)
  2. チームによる開発がスムーズに行える
  3. クラウド上でソースコードを安全に保存できる
  4. Web上でコードを閲覧・レビュー・コメントできる

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に反映されます。

【参考文献】

タイトルとURLをコピーしました