Git 基礎使用ガイド
Git の基本的な操作手順と頻出コマンドの説明
導入篇
Git を使用してプロジェクト(コード以外も含む)を管理する場合、2つの開始方法があります。1つはリモートからローカルへで、まずリモートリポジトリを作成し、その後 git clone でローカルに展開する方法です。これは新規プロジェクトを立ち上げてローカルと接続する際に使用します。もう1つはローカルからリモートへで、まずローカルでプロジェクトを作成し自由に編集した後、リモートに同期する段階で初期化と接続を行います。
前者の方が直感的な流れですが、後者は具体的な計画がまだ決まっていない段階で自由に作業を進め、後からリモートにアップロードしたい場合に適しています。
後者の流れと使用するコマンドは以下の通りです:
cd プロジェクトパス
git init
git add
git commit -m "<コメント>"
git push <リモート名> <ブランチ名>
関係性篇
ローカルリポジトリ、独自リモートリポジトリ、他者のリポジトリの関係性を図示すると以下のようになります。
Git を使用する際の基本的な作業は三STEPです。ファイル編集 → git add → git commit の繰り返しです。
ブランチは Git の重要な機能の一つです。リポジトリ作成時のデフォルトブランチは main です。個人作業かつシンプルな場合は特に問題ありませんが、既存の作業に影響を与えずに新機能を開発したい場合は、ブランチを作成するのが的最佳です。ブランチ上で自由に操作しても、メインの main ブランチには一切影響を与えません。
ブランチの作成は git branch <ブラanch名>、ブランチの切り替えは git checkout <ブランチ名> で行います。以後、該当ブランチでの git add や git commit は他のブランチに影響しません。ブランチの内容をリモートにプッシュすると、リモート上也該ブランチが自動作成されます。
ローカルディレクトリは同一ですが、ブランチBでファイルを作成・削除してもブランチAに影響しないのでしょうか?
実際に確認してみましょう。featureDoc というブランチを作成して切り替え、main ブランチの SampleApp.java ファイルを削除し、newFeature.md と config という2つのファイルを新規作成します(これらは単なる識別用で意味はありません)。その後、このブランチでの変更をコミットします。
ブランチが2つできました。git checkout <ブランチ名> で切り替えながら、ローカルディレクトリの様子を見てみましょう。
上図は main ブランチのディレクトリ内容
上図は featureDoc ブランチのディレクトリ内容
ブランチを切り替えると自動でディレクトリ内容が変更されます。Git が面倒な作業を代わりに行ってくれるのです。
複数のブランチ作業後、統合が必要になったらどうしますか。ブランチBの変更をブランチAに反映させる場合、まずAに切り替えてマージコマンドを実行します。例えば、先ほどのブランチを main にマージすると、B作成時点からの全ての「変更」がAに反映されます。先ほどの featureDoc ブランチではファイルを1つ削除し2つ新增しました。つまり、main の唯一のファイル SampleApp.java が削除され、2つのファイルが新增えられる結果になります。
git checkout main
git merge featureDoc
変更を git push でリモートに送信すると、main ブランチの内容も featureDoc と同じになります。
ブランチを使用しなくなった場合は削除します。Git は多くのブランチを作成して作業することを推奨しており、ドキュメント作成時の「コピー」として考えると良いでしょう。
コマンド篇
- 作成
- ローカルディレクトリを Git 作業領域として初期化:
git init - 追加とコミット
- 作業領域からバージョン管理に追加:
git add <ファイル名> - 作業領域の全ファイルを追加:
git add . - 取り消し
- 作業領域の変更を破棄:
git checkout -- <ファイル> - ステージング_area の変更を取り消し、直近のコミット狀態に戻す:
git reset HEAD <ファイル> - 特定のコミットまで歷史を巻き戻す:
git reset --hard <コミットID> - 削除
- バージョン管理からファイルを削除:
git rm <ファイル> - バージョン管理のファイルで作業領域を置換:
git checkout -- <ファイル> - 連携
- ローカルとリモートを接続:
git remote add <ローカル名> <リモートURL> - ローカルからリモートに推送:
git push <オプション> <リモート名> <ブランチ名> - リモートからローカルを更新:
git pull <リモート名> <ブランチ名> - ブランチ
- ブランチ一覧を表示:
git branch - ブランチを作成:
git branch <ブランチ名> - ブランチを切り替え:
git checkout <ブランチ名> - 作成と切り替えを同時に実行:
git checkout -b <ブランチ名> - 指定ブランチにマージ:
git merge <マージ元ブランチ名> - ブランチを削除:
git branch -d <ブランチ名>
参考リソース
- GitHub における Fork の意义
- Git 逆引きリファレンス
- Git と GitHub による协業开发手法