Skip to content

付録C Git のインストールと提出ルール

この付録は、本研修で 課題を Git で提出する ために必要な操作手順を整理した手順書です。

  • 各章末「Git への提出」セクションには 4 コマンド例 だけが書かれています。コマンドの意味・初回セットアップ・トラブル対処などの 詳細はこの付録に集約 しています。
  • 過去章の提出方法を見直したいときや、git push でエラーが出たときも、この付録に戻ってきてください。

本付録は「課題提出のための Git」だけを扱います

Git の一般的な機能(ブランチ・マージ・履歴調査など)には触れません。提出に必要な範囲のみ記載しています。 提出の タイミングや心構え(未完成でも提出する文化など)は 付録 A-3 を、git push のエラー詳細は 付録 E-15 / E-16 を参照してください。


C-1 章ごとの提出フロー(基本の 3 コマンド)

Section titled “C-1 章ごとの提出フロー(基本の 3 コマンド)”

各章の演習が一段落したら、コマンドプロンプトで C:\Training\CSharp に移動し、次の 3 コマンドで提出します。 各章末の「Git への提出」セクションに同じコマンド例があります。

Terminal window
git add .
git commit -m "Chapter05 繰り返し処理"
git push
コマンド役割
git add .現在のフォルダ以下の すべての変更 を提出候補に登録
git commit -m "..."提出候補を 1 つの提出単位 として確定する
git pushローカルの確定内容を ファイルサーバーへ送信 する

状態を確認したいときは git status

何が提出候補になっているかを確認したい場合は、git add . の前に git status を実行してください。 modified: <ファイル名> / Untracked files: の表示で、変更があったファイルが分かります。

git add .現在のフォルダ以下のすべての変更 を提出候補に追加します。 研修中は、基本的に git add . 一発で OK です(C:\Training\CSharp\ 配下のソースコードがまとめて提出候補に登録されます)。

特定のファイルだけ追加したい場合は、ファイル名を指定します。

Terminal window
git add Program.cs
git add Models/Employee.cs

C-2 初回セットアップ(研修開始時の 1 回のみ)

Section titled “C-2 初回セットアップ(研修開始時の 1 回のみ)”

研修開始時に、次の 6 ステップを 1 回だけ 実施します。 2 章目以降はこのセットアップは不要で、C-1 の 3 コマンドだけで提出できます。

コマンドプロンプトを起動します(Windows キー → cmd と入力して Enter)。

Terminal window
git --version

バージョンが表示されれば OK です。

git version 2.xx.x.windows.x

表示されない場合は 講師に確認 してください。

[2] 本人確認情報(名前・メール・既定ブランチ)を設定する

Section titled “[2] 本人確認情報(名前・メール・既定ブランチ)を設定する”

Git は「誰がこのコードを書いたか」を記録する仕組みになっています。 まず、自分の名前とメールアドレスを PC の Git に登録します。次の 3 行を 1 行ずつ入力して Enter を押してください。

Terminal window
git config --global user.name "社員番号_名前"
git config --global user.email "自分のメールアドレス"
git config --global init.defaultBranch main

具体例(社員番号 1234、名前 imai の人):

Terminal window
git config --global user.name "1234_imai"
git config --global user.email "imai@example.co.jp"
git config --global init.defaultBranch main

コマンドを打っても何も表示されませんが、エラーが出なければ設定完了 です。

設定を確認します。

Terminal window
git config --global --list

user.nameuser.emailinit.defaultBranch=main の 3 行があれば OK です。

3 行目 init.defaultBranch main は何のため?

次のステップ [4] で git init を実行したときに、最初のブランチが main という名前で作られるようにする設定です。 サーバー側のリポジトリも main で運用しているので、これに合わせます。

メールアドレスは社内・研修用のものを使ってください。プライベートのメールアドレスをコミット履歴に残さないよう注意。

[3] 共有ドライブの所有権チェックを許可する

Section titled “[3] 共有ドライブの所有権チェックを許可する”

Git 2.35.2 以降は、セキュリティのため 所有者が違うリポジトリへの操作を拒否 するようになりました(dubious ownership エラー)。 共有ドライブ(Z:)上のリポジトリは Windows のログインユーザーと所有者が異なるため、そのままだと git push 時にエラーになります。

研修環境では、次のコマンドを 1 回だけ 実行して、所有権チェックを無効化します。

Terminal window
git config --global --add safe.directory *

* の意味

アスタリスクは「任意の場所」を表し、すべての Git リポジトリで所有権チェックをスキップする設定です。 研修環境(管理された共有ドライブ)での簡便な対処として広く使われます。

実務では、リポジトリのパスを 1 件ずつ追加するか、共有ドライブを使わず GitHub・GitLab などのネットワークサービス経由で運用する形が一般的です。

設定を確認します。

Terminal window
git config --global --list

safe.directory=* の行が追加されていれば OK です([2] の user.name / user.email / init.defaultBranch も合わせて 4 行表示されます)。

[4] 作業フォルダと .gitignore を準備する

Section titled “[4] 作業フォルダと .gitignore を準備する”

C# のプログラムを作っていくための専用フォルダを準備します。

  1. エクスプローラーで C ドライブ直下に Training フォルダを作り、その中に CSharp フォルダを作成します(パス:C:\Training\CSharp)。
    • 研修開始時に 既に作成済みの場合 は、この手順は不要です。
  2. C:\Training\CSharp の中に、.gitignore(ドット ギットイグノア)という名前のテキストファイルを作成します。
  3. メモ帳などで開き、次の内容をコピー&ペーストして 上書き保存 します。
# ビルド結果の一時ファイルを除外
[Bb]in/
[Oo]bj/
# Visual Studio ユーザー固有ファイルを除外
.vs/
*.user

.gitignore の役割

Visual Studio がビルドのたびに自動生成する bin/obj/.vs/ などのフォルダは、ソースコードではなく 一時ファイル です。 これらを提出するとサーバーの容量を圧迫し、講師の確認も難しくなります。 .gitignore に書いたパターンに合うファイル・フォルダは、git add . の対象から自動的に外れます。

研修用の .gitignore のひな形は ファイルサーバー上にも置いてあります。コピーで配置しても構いません(中身が同じであれば OK)。

[5] フォルダを Git 管理下に置き、提出先を登録する

Section titled “[5] フォルダを Git 管理下に置き、提出先を登録する”

コマンドプロンプトで作業フォルダへ移動します。

Terminal window
cd C:\Training\CSharp

このフォルダを Git で管理する宣言をします(Git の初期化)。

Terminal window
git init

Initialized empty Git repository in C:/Training/CSharp/.git/ のようなメッセージが出れば成功です。

続いて、提出先となるサーバー(リモートリポジトリ)を origin という名前で登録します。 研修環境では、共有ドライブが Z: ドライブにマウント されている前提で、次のように登録します。リポジトリ名は 社員番号 + 名前 の形式で、講師から案内されます。

Terminal window
git remote add origin z:\CSharp\<社員番号_名前>.git

具体例(社員番号 9999、名前 imai の人):

Terminal window
git remote add origin z:\CSharp\9999_imai.git

origin とは

Git の慣習で、提出先となるリモートリポジトリの呼び名として origin(オリジン) がよく使われます。 「提出先」という意味の固有名詞だと思って覚えてください。

サーバー側のリポジトリは講師が事前に用意済みです

z:\CSharp\<社員番号_名前>.git は、講師があらかじめサーバ上に作っている空の Git リポジトリです。 受講者側で新規作成する必要はありません。

補足:UNC パスで直接指定する場合(マウントしていない環境)

環境によっては、共有ドライブを Z: にマウントせず、UNC パス(\\サーバ名\...)で直接アクセスすることもあります。その場合の書き方は次のようになります。

Terminal window
git remote add origin \\SERVER_NAME\CSharp\<社員番号_名前>.git

どちらの形式を使うかは、研修当日に講師から案内されます。研修環境では Z: ドライブ形式が標準ルートです。

ここまでで準備ができたので、.gitignore だけが入った今の状態をサーバーへ初回提出します。

フォルダ内のすべての変更(現状は .gitignore のみ)を提出候補に追加します。

Terminal window
git add .

add. の間には 半角スペース が必要です。

変更内容にメッセージを付けて、自分の PC 内に確定(コミット)します。

Terminal window
git commit -m "初期設定の完了"

サーバーに向けて初回提出(プッシュ)をします。

Terminal window
git push -u origin main

-u origin main は初回だけ必要な「おまじない」です

これにより、「自分の PC の main ブランチ」と「サーバーの main ブランチ」を紐付ける設定が完了します。 2 回目以降は git push だけで OK です(-u origin main を毎回付ける必要はありません)。

これで初回セットアップは完了です。 以降の研修中は、すべての章・課題のプロジェクトを C:\Training\CSharp\ の中に作成し、各章末で C-1 の 3 コマンドだけ実行すれば提出できます。

C:\Training\CSharp\
├─ .gitignore ← C-2 [4] で配置済み
├─ Chapter01\
│ └─ Ch01_FirstCSharp\ ← 講義用のプロジェクト
├─ Kadai01\
│ ├─ Kd01_01_SelfIntroduction\ ← 課題用のプロジェクト
│ └─ Kd01_02_Calculation\
├─ Chapter02\
└─ Kadai02\

コミットメッセージは、後から見て どの章の作業か分かる 形にします。

Terminal window
git commit -m "Chapter{章番号(2 桁)} {章タイトル}"

例:

Chapter01 初めてのC#プログラミング
Chapter05 繰り返し処理
Chapter16 SQLServer 環境構築
Chapter24 Windowsフォーム社員管理アプリ:検索
Chapter28 Web 社員管理アプリ:一覧表示

初回セットアップ完了時のみ、特例で 初期設定の完了 というメッセージを使います(C-2 [6] 参照)。

修正
更新
test
aaa
fix

これらは、後から見て 何を提出したのか分かりません。 未完成のまま提出する場合でも、章番号とタイトル をメッセージに入れてください。

メッセージは必ずダブルクォート内に書きます。git commit -m "..." のダブルクォートを忘れると、シェルが意図しない解釈をします。


C-4 .gitignore とビルド成果物の扱い

Section titled “C-4 .gitignore とビルド成果物の扱い”

C-2 [4] で配置した .gitignore により、Visual Studio が自動生成するビルド成果物(bin/obj/.vs/ など)は Git の管理対象から自動的に除外 されます。 受講者は ソースコードの作成・編集だけ に集中してください。

もし git statusbin/ / obj/ が表示されたら

C:\Training\CSharp\.gitignore が正しく配置されていない、または内容が不足している可能性があります。 ファイルの存在と中身を確認してください(C-2 [4] の内容と一致していれば OK)。

それでも解消しない場合は 講師に相談 してください。自己判断で git rm などのコマンドを実行しないでください。


git push でエラーになる代表的な原因と一次対処です。

エラー文の例原因一次対処
Could not resolve host / ネットワーク系ファイルサーバーに接続できないLAN 接続を確認
Authentication failed / Permission denied認証に失敗権限・パスを講師に確認
Updates were rejected / non-fast-forward別の人(または別 PC)の変更が先に入っているgit pull で取り込んでから再 push、または講師に相談
pathspec ... did not match any filesgit add で指定したファイル名が間違っているgit status で正しい名前を確認
src refspec main does not match anymain ブランチがまだ作成されていないgit commit を実施してから push する(C-2 [6] 参照)
bad object / corruptリポジトリ破損の可能性自己判断せず講師に相談
[1] エラーメッセージを最後まで読む(原因のヒントが書いてあることが多い)
[2] 軽い問題なら一度だけ再実行(ネットワーク再接続後など)
[3] 解決しなければ講師に相談(同じコマンドを繰り返さない)

同じ操作を繰り返さない

エラーが出たまま git push を 5 回繰り返しても、結果は同じです(または悪化します)。 1 度試して直らなければ、何が起きたか を講師に伝えてください(質問の作法は付録 A-8 参照)。

git reset などの 破壊的なコマンドを自分で試さない でください。リポジトリの状態が壊れる可能性があります。

詳しいエラー別の対処は 付録 E-15「Git push でエラーになる」 にまとめています。


各章の提出前に、次の項目を確認してください。

  • プロジェクトを Visual Studio から F5 で実行できる(エラーで停止していない、または未解決箇所を説明できる)
  • 必要なソースファイルが揃っている(Program.cs / Form1.cs / Controller / View など)
  • 作業フォルダが C:\Training\CSharp\ の中 にある
  • C:\Training\CSharp\.gitignore が存在する(C-2 [4])
  • git status を実行して、意図した変更だけ が出ている(bin/obj/ が出ていない)
  • commit メッセージが Chapter{章番号} {章タイトル} 形式 になっている
  • git pushエラーなく完了 している(エラーなら C-5)
  • 未完成の場合、どこまで / どこで止まったか を説明できる(運用ルールは付録 A-3)