GitHub Desktop実践入門:CSV編集で体験するGitワークフロー

このドキュメントでは、GitHub Desktop を利用して、4人の開発者が同じ CSV ファイルを編集する際の手順を説明します。
初学者が ブランチ管理、プルリクエスト(PR)、マージ、競合解決 を学べるように構成しています。


作業の流れ

  1. メインブランチの取得とクリーンアップ
  2. 各自、新しいブランチを作成
  3. 4択クイズを CSV に追加
  4. プルリクエスト(PR)を作成し、レビューを受ける
  5. 他の PR を取り込み、自分の PR を再作成
  6. 競合(コンフリクト)を解決
  7. 最終的に全員の変更を統合

1. メインブランチの取得とクリーンアップ

まず、メインブランチ(main)の最新状態をローカルに取り込みます。

GitHub Desktop の操作

  1. GitHub Desktop を開く
  2. リポジトリを開く
  3. ブランチを main に切り替える
    • 画面上の「Current branch」から main を選択
  4. 最新の main を取得
    • 右上の「Fetch origin」ボタンをクリックし、最新の変更を取得
    • 「Pull origin」ボタンが表示されている場合はクリック

不要なブランチを削除

  1. 画面上の「Current branch」からプルダウンを開く
  2. 不要なブランチを選択します
  3. 右クリックで「Delete」を選択
  4. 確認画面で、Yes, delete this….を選択し、Deleteします(詳細は下記説明を参考にしてください)

この画像は、Gitのブランチ削除の確認ダイアログです。

解説

1. 削除対象のブランチ

  • 削除しようとしているブランチの名前は 「ブランチ名」 となっています。

2. 削除の注意点

  • 「This action cannot be undone.(この操作は元に戻せません)」
    • 一度削除すると、元に戻せないため慎重に判断する必要があります。

3. リモートブランチの削除

  • 「The branch also exists on the remote, do you wish to delete it there as well?」
    • このブランチはリモートリポジトリ(GitHubやGitLabなど)にも存在していることがわかります。
    • 下のチェックボックス 「Yes, delete this branch on the remote」 にチェックを入れると、リモートリポジトリのブランチも削除されます。

4. 選択可能なアクション

  • 「Cancel」ボタン
    • 削除をキャンセルし、ブランチを維持する。
  • 「Delete」ボタン
    • ローカルのブランチを削除する。(チェックを入れていればリモートのブランチも削除)

削除時の注意点

  1. 本当に削除して良いか確認
    • 誤って削除すると、元に戻せないため、最新のコードが他のブランチやリポジトリに残っているか確認する。
  2. リモートブランチの削除が必要か考える
    • 他の開発者がまだ作業中の場合、リモートのブランチを削除すると影響を与える可能性がある。
  3. バックアップが必要なら、別のブランチにマージする
    • もし削除前にコードを保存しておきたい場合は、mainブランチ別のブランチ にマージしておく。

このダイアログの意味を理解した上で、削除するかどうか慎重に判断しましょう!


2. 各自、新しいブランチを作成

ルール

  • それぞれの開発者は、以下のブランチを作成し、CSV ファイルを編集する
  • ブランチ名のルール → feature/ジャンル
    • feature/trivia(雑学・豆知識)
    • feature/entertainment(エンタメ・芸能)
    • feature/gourmet(グルメ・食文化)
    • feature/sports(スポーツ・オリンピック)

GitHub Desktop の操作

  1. 「Current branch」ボタンをクリック
  2. 「New branch」を選択
  3. ブランチ名を入力(例: feature/gourmet
  4. 「Create branch」ボタンをクリック
  5. このブランチで作業する

3. 4択クイズを CSV に追加

各自、自分のブランチで CSV にクイズを1問追加する。

CSV の編集ルール

  • カラムの削除は禁止
  • 新しいカラムの追加は相談してから
  • CSV のフォーマットを統一
  • 区切り文字:,(カンマ)
  • 文字コード:UTF-8(BOMなし)

例: CSV のフォーマット

  Text,Choice1,Choice2,Choice3,Choice4,CorrectIndex,ImagePath,SoundPath
  問題文1,選択肢1,選択肢2,選択肢3,選択肢4,0,images/q1.png,sounds/q1.wav

各自、新しい行を追加するだけにする(既存の行は編集しない)。


4. プルリクエスト(PR)を作成し、レビューを受ける

各自、自分のブランチで作業が完了したら、GitHub にプッシュし、PR を作成する。

GitHub Desktop の操作

  1. 変更をステージングする
    • 「Summary」に適切なコミットメッセージを入力
    • 「Commit to feature/gourmet」をクリック
  2. GitHub にプッシュ
    • 右上の「Push origin」をクリック
  3. GitHub に移動して PR を作成
    • feature/gourmetmain に向けた PR を作成
    • 「Reviewers」にランダムで別の開発者を指定
    • レビューを受けて修正が必要なら直す

5. 他の PR を取り込み、自分の PR を再作成

GitHub Desktop の操作

  1. メインブランチを最新にする
    • 「Current branch」→ main を選択
    • 右上の「Fetch origin」→「Pull origin」
  2. 自分のブランチにマージ
    • 「Current branch」→ 自分の feature/〇〇 に戻る
    • 「Branch」メニュー → Merge into current branchmain
      「Branch」メニュー → Update from mainでも同じです
    • 競合がなければそのままコミット & プッシュ

6. 競合(コンフリクト)を解決

他の開発者が同じ questions.csv を編集している場合、競合が発生する可能性がある。

GitHub Desktop での競合解決

  1. 「Current branch」 → feature/〇〇 を選択
  2. 右上の「Pull origin」をクリック
    • コンフリクトがある場合、エラーメッセージが表示される
  3. Visual StudioやVS Code などのエディタで questions.csv を開く
  4. コンフリクトを修正する
    • GitHub Desktop では競合解決はできないので、手動で修正
  5. 修正後、GitHub Desktop に戻る
    • 変更をコミット(例: コンフリクトを解決)してプッシュ

競合の解決を開始するには、ファイルをダブルクリックします。 または、競合を含むファイルをエディターで開くには、[マージ エディターを開く] を選択できます。

マージ エディターで、次のいずれかの方法を使用して競合の解決を開始します (番号付きスクリーンショットに示されているように)。

  1. 競合している項目を1行ずつ確認し、チェックボックスを選択して右側または左側のどちらかを選んでください。-又は-
  2. [追加を取得] ボタンを選択するか F10 キーを押してすべての入力方向の変更を受け入れるか、[現在を取得] ボタンで (または F11 キーを押して) 競合するすべての変更の現在のバージョンを保持します。 どちらかのサイドバイサイドフレームの上部にあるチェックボックスのいずれかを選択することで、同じことを行うことができます。-又は-
  3. 結果 ウィンドウでコードを手動で編集します。
  • マージの競合の解決が完了したら、[マージを受け入れる] を選択します。 競合するすべてのファイルに対してこのプロセスを繰り返します。Visual Studio 2022 の [マージの受け入れ] アクションのスクリーンショット。

7. 最終的に全員の変更を統合

全員のプルリクエストがマージされるまで繰り返す。
最後に、main の最新状態を取得し、各自のローカルを更新する。

GitHub Desktop の操作

  1. 「Current branch」→ main を選択
  2. 「Fetch origin」→「Pull origin」
  3. 古いブランチは削除

まとめ

  1. ブランチを作成し、CSV を編集
  2. プルリクエストを作成し、レビューを受ける
  3. マージ後、他の変更を取り込んで再度プルリクエスト
  4. 競合が発生したら手動で解決
  5. 全員の変更を統合して完了

GitHub Desktop を活用することで、直感的に Git の流れを学習できるようになっています。

C#,チーム開発

Posted by hidepon