Git のセットアップ¶
バージョン管理は Mod 開発において必須ではありませんが、変更履歴の追跡やバックアップとして非常に役立ちます。 ここでは Git の初期設定から GitHub へのプッシュまでの基本的な流れを説明します。
Note
このセクションでは、マウスによる GUI 操作ではなく、コマンドラインを用いた CLI 操作が主体となります。 Windows の場合は Windows Terminal 、 macOS の場合は ターミナル の使用を推奨します。
Git のインストール¶
PowerShell やコマンドプロンプトから、 Winget 経由でインストールします。
あるいは、 Git for Windows から直接入手することもできます。
各パッケージマネージャを使ってインストールします。
その他のディストリビューションについては git-scm を参照してください。
初期設定¶
インストール後、まずユーザー情報を設定します。コミットにこの情報が記録されます。
Danger: メールアドレスの流出に注意
ここで設定した名前及びメールアドレスは、公開リポジトリにプッシュしたコミットから誰でも確認できます。
個人のメールアドレスを使用する代わりに、GitHub から提供されている noreply アドレスを使うことを推奨します。
詳しくは #メールアドレスを公開しない を参照してください。
設定が反映されているか確認するには、以下のコマンドを使います。
GitHub CLI のインストール¶
GitHub CLI (gh) を使うと、手間のかかる GitHub 認証を簡単に済ませたり、 GitHub 関連の操作をコマンドラインから直接行ったりすることができます。
ディストリビューションによって手順が異なります。
# Ubuntu / Debian
(type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& sudo mkdir -p -m 755 /etc/apt/sources.list.d \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
# Fedora (DNF5)
sudo dnf install dnf5-plugins
sudo dnf config-manager addrepo --from-repofile=https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh --repo gh-cli
詳細は GitHub CLI のドキュメント を参照してください。
インストール後、 gh auth login を実行してログインします。
$ gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: XXXX-XXXX
Press Enter to open https://github.com/login/device in your browser...
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
! Authentication credentials saved in plain text
✓ Logged in as <username>
Git の基本操作¶
リポジトリのクローン¶
GitHub などで公開されているパブリックリポジトリは、誰でもクローンしてローカルで作業を始めることができます。
# カレントディレクトリにリポジトリをクローン
git clone https://github.com/<ユーザー名>/<リポジトリ名>
# GitHub CLI でも同様に操作できます
gh repo clone <ユーザー名>/<リポジトリ名>
プライベートリポジトリについては、 GitHub CLI 等での認証が済んでいれば、同様にクローンできます。
一般に、GitHub側のリポジトリを リモートリポジトリ 、クローンした手元のリポジトリを ローカルリポジトリ と呼びます。
リポジトリへの変更¶
ローカルで変更を加えても、そのままでは GitHub へ反映できません。
Git リポジトリ上で変更は コミット という単位で管理されます。
変更は、まず ステージング してからコミットする必要があります。
これでコミットがローカルの Git リポジトリに記録されました。
リモートに反映するには、プッシュします。
GitHub 上のリモートリポジトリにコミットをプッシュできるのは、そのリポジトリの所有者とコラボレーターだけです。 他人のリポジトリに変更を提案するときは、 GitHub 上でフォークしたリポジトリへ変更を加え、プルリクエストを送信するのが一般的です。
リポジトリの更新¶
リモートリポジトリの最新の履歴を取得するには、フェッチします。これはローカルの作業ブランチには影響しません。
変更を取得して現在のブランチに統合するには、プルします。
特に共同開発においては、 git pull で他の人との整合性を取ってから変更を加えることが重要です。
基本的なワークフロー¶
日常的によく使うコマンドをまとめます。
| コマンド | 内容 |
|---|---|
git status |
変更のあるファイルを確認 |
git diff |
変更内容の差分を確認 |
git log --graph --oneline --all |
コミット履歴を確認 |
git add . |
カレントディレクトリ配下の変更をステージング |
git commit -m "コメント" |
ステージングした変更をコミット |
git pull |
リモートの変更を取得 |
git push |
リモートにプッシュ |
Tip
IntelliJ IDEA には Git の GUI クライアントが内蔵されています。 視覚的にコミット・プッシュ・差分確認などの操作ができるため、ぜひ活用してください。
.gitignore の設定¶
.gitignore に記載したパターンのファイルは Git の追跡対象から除外されます。
ビルド成果物や IDE の設定ファイルなど、リポジトリに含めたくないものを指定しておきましょう。
Forge / NeoForge などのテンプレートを使っている場合はあらかじめ .gitignore が用意されています。
Note
コミット済みのファイルは、後から .gitignore を書き換えても追跡され続けます。
メールアドレスを公開しない¶
Git の設定に使ったメールアドレスはコミットに埋め込まれ、 git log などで参照できます。
公開リポジトリにプッシュすると、コミット履歴から誰でも確認できる状態になってしまいます。
noreply アドレスを使う(推奨)¶
GitHub はプライバシー保護のために noreply アドレス を提供しています。
- GitHub の Settings > Emails を開く
- Keep my email addresses private にチェックを入れる
- [任意] Block command line pushes that expose my email にチェックを入れる
- 有効にすると、 GitHub に登録済みのアドレスでコミットした場合にプッシュが拒否されるようになります
- 表示される
xxxxxxxxxx+username@users.noreply.github.com形式のアドレスをコピーする
これで今後のコミットには実際のアドレスが含まれなくなります。
リポジトリごとに設定を使い分ける¶
用途によってアドレスを分けたい場合は、リポジトリのルートで --global なしでコマンドを実行します。
ローカル設定はグローバル設定より優先されます。
すでに流出してしまった場合¶
Warning: force-push では解決しない
GitHub はプッシュされたコミットをほぼすべて保持しています。
git push --force で履歴を書き換えても、コミットハッシュがわかれば元のコミットは参照可能な場合があります。
すでに公開してしまったメールアドレスを確実に消し去る方法は、リポジトリを削除・再作成することです。 そうならないよう、くれぐれも注意してください。
いずれの場合も、まず 今後のコミットに正しいアドレスが使われるよう設定を直す ことが最優先となります。