Git入門:バージョン管理の基本
### 1. Gitとは?
Gitは、ソースコードなどの変更履歴を管理する分散型バージョン管理システムです。
- **リポジトリ**: プロジェクトとその履歴の入れ物
- **コミット**: ある時点の変更を記録したスナップショット
- **ブランチ**: 独立した作業の流れを作る仕組み
### 2. インストールと初期設定
- Linux (Ubuntu): `sudo apt install git`
- macOS (Homebrew): `brew install git`
- Windows: Git for Windows をインストール
```bash
# 最低限の設定(名前とメール)
git config --global user.name "あなたの名前"
git config --global user.email "you@example.com"
```
### 3. 基本的なワークフロー
ローカルでの典型的な手順の例です。
```bash
# リポジトリのクローン
git clone [https://example.com/your-repo.git](https://example.com/your-repo.git)
# 新しく作る場合
git init my-project
cd my-project
# 変更をステージしてコミット
git add README.md
git commit -m "Initial commit"
# 状態確認
git status
git log --oneline
```
### 4. ブランチの基本
ブランチを作って作業し、メインにマージする流れです。
```bash
# ブランチ作成と切替
git branch feature/foo
git switch feature/foo
# または git checkout -b feature/foo
# 作業してコミット
git add .
git commit -m "Add feature foo"
# main に戻してマージ
git switch main
git merge feature/foo
# 不要になったら削除
git branch -d feature/foo
```
### 5. 変更の取り消し・履歴操作
使う場面に応じて安全なコマンドを選びます。
```bash
# ステージから外す
git restore --staged file.txt
# 作業ツリーの変更を捨てる(警告: 失われる)
git restore file.txt
# 直近のコミットをやり直す(メッセージだけ修正)
git commit --amend
# 過去に戻す(共有リポジトリでは注意)
git reset --hard
# 取り消しを安全に行う(履歴を残す)
git revert
```
### 6. リモートとプルリクエストの基本
リモート(例: GitHub)との連携の基本です。
```bash
# リモート追加
git remote add origin git@github.com:username/repo.git
# 最初のプッシュ(ブランチを追跡)
git push -u origin main
# 更新を取得
git fetch
git pull
```
プルリクエスト(プルリク)は、変更をレビューしてマージするための一般的なワークフローです。
### 7. よく使うコマンド一覧
- `git status`: 状態確認
- `git add `: ステージに追加
- `git commit -m "msg"`: コミット
- `git log --oneline`: 履歴表示(簡易)
- `git branch`: ブランチ一覧
- `git switch `: ブランチ切替
- `git merge `: ブランチの統合
- `git stash`: 一時退避
### 8. コンフリクト(競合)の解決
複数人で開発していると、「同じファイルの同じ行」を同時に編集してしまうことがあります。この状態でマージしようとすると、Gitはどちらの変更を残すべきか判断できず、コンフリクト(競合)という警告を出して一時停止します。
コンフリクトが起きると、ファイルの中に以下のような謎の記号(コンフリクトマーカー)が自動的に挿入されます。
```text
<<<<<<< HEAD
あなたの変更内容(現在いるブランチ)
=======
相手の変更内容(取り込もうとしているブランチ)
>>>>>>> feature/new-title
```
**解決する手順:**
1. エディタでコンフリクトしたファイルを開く。
2. `<<<<<<<`、`=======`、`>>>>>>>` の記号を**すべて手動で削除**する。
3. 最終的に残したい正しいコードの形に書き直して保存する。
4. `git add <ファイル名>` で解決したことをGitに伝える。
5. `git commit` を実行してマージを完了させる。
*※コンフリクトはエラーではなく、意図しないコードの上書きを防ぐための安全装置です。落ち着いて記号を消せば問題ありません!*
### 9. 練習問題
1つ目の簡単な演習です。手元で試してください。
```bash
# 練習用ディレクトリ作成
mkdir practice-git && cd practice-git
git init
echo "# Practice" > README.md
git add README.md
git commit -m "Add README"
# ブランチ作成して変更を加える
git switch -c feature/greeting
echo "こんにちは" >> README.md
git add README.md
git commit -m "Add greeting"
# main に戻してマージ
git switch main
git merge feature/greeting
# 確認
git log --oneline
git status
```
他にも、`git revert` や `git reset` を試してみてください(安全な範囲で)。
本格 Git 操作シミュレーター
ワークスペース状態
ワーキングツリー:
ステージングエリア:
現在のファイル内容(ここで直接文字を打ち込めます):
### 10. 参考資料
- Pro Git(日本語訳): https://git-scm.com/book/ja/v2
- Git公式ドキュメント: https://git-scm.com/doc
- GitHub Guides: https://guides.github.com/
Wiki一覧に戻る