# フォークしよう

[< Previous: SSH鍵を設定しよう](../01-github-basics/04-ssh-setup.md) | [Back to Index](../../../README.md) | [Next: git clone — リポジトリをローカルに持ってくる >](02-clone.md)

## What & Why

「フォーク（fork）」は、他の人のリポジトリを自分の GitHub アカウントにコピーする機能です。  
フォークすると、元のリポジトリに影響を与えずに自由に変更できます。  
オープンソースへの貢献や、チーム開発への参加はフォークから始まります。

## Content

### シナリオ

先輩から「このリポジトリを使って練習してみて」と URL を渡されました。  
でも、あなたはそのリポジトリへの書き込み権限を持っていません。  
そんなときに使うのが「フォーク」です。

---

### フォークとは？

フォークとは、**GitHub 上に他人のリポジトリのコピーを自分のアカウントに作ること**です。

```
元のリポジトリ:  github.com/example/git-tutorial-practice
        ↓ フォーク
自分のコピー:    github.com/あなたのユーザー名/git-tutorial-practice
```

フォーク後は、自分のコピーに対して自由にプッシュできます。  
元のリポジトリへの権限は必要ありません。

---

### フォーク vs クローン

混同しやすいので、ここで整理しておきましょう。

| 操作 | 場所 | 説明 |
|------|------|------|
| **フォーク** | GitHub 上（クラウド） | 他人のリポジトリを自分の GitHub アカウントにコピーする |
| **クローン** | ローカル（自分のPC） | GitHub 上のリポジトリを自分のパソコンにコピーする |

フォークは「GitHub 上でのコピー」、クローンは「ローカルへのダウンロード」です。  
この2つはセットで使うことが多く、次のページでクローンを扱います。

---

### なぜフォークが必要なの？

GitHub のリポジトリには、**誰が push できるか**というアクセス権限があります。  
他の人のリポジトリには、基本的に直接 push できません。

でも、フォークすれば：

1. 自分のアカウントにコピーが作られる
2. そのコピーには自分が自由に push できる
3. 変更が完成したら「プルリクエスト」で元のリポジトリに提案できる

これが、オープンソースプロジェクトへの貢献の基本的な流れです。

---

### 実際にフォークしてみよう

練習用リポジトリのURL（実際のURLに置き換えてください）:

```
https://github.com/example/git-tutorial-practice
```

**手順:**

**1. リポジトリのページを開く**

ブラウザで上記の URL にアクセスします。

**2. 「Fork」ボタンをクリック**

ページ右上に「Fork」ボタンがあります。クリックしましょう。

![Fork ボタンはページ右上にあります]

**3. フォーク先を選ぶ**

「Owner」のドロップダウンに、自分のアカウントが表示されます。  
自分のユーザー名を選んで「Create fork」をクリックします。

**4. フォークが完了**

数秒待つと、自分のアカウントにリポジトリがコピーされます。  
URL が次のように変わっていれば成功です：

```
https://github.com/あなたのユーザー名/git-tutorial-practice
```

---

### フォーク後の状態を確認しよう

フォークしたリポジトリのページを見てみましょう。  
リポジトリ名の下に、次のような表示があるはずです：

```
forked from example/git-tutorial-practice
```

これは、このリポジトリが元のリポジトリ（「upstream」とも呼ばれます）から派生していることを示しています。  
後で元のリポジトリの更新を取り込むこともできますが、その方法はまた別のページで紹介します。

---

### まとめイメージ

```
example/git-tutorial-practice  ← 元のリポジトリ（upstream）
        ↓ フォーク（GitHub 上でのコピー）
あなた/git-tutorial-practice    ← あなたのフォーク（origin になる予定）
        ↓ クローン（次のページ）
あなたのPC上のローカルリポジトリ
```

次のページでは、このフォークしたリポジトリをローカルにクローンします。

## Summary

- フォークとは、他人の GitHub リポジトリを自分のアカウントにコピーすること。
- フォークは GitHub 上（クラウド）の操作。クローンはローカルへのダウンロード。
- フォークすると、元のリポジトリへの権限なしに自由に push できる。
- フォークしたリポジトリは元のリポジトリ（upstream）とつながっている。
- GitHub のリポジトリページ右上の「Fork」ボタンからフォークできる。

## Exercises

### 演習1: リポジトリをフォークしよう

1. ブラウザで練習用リポジトリを開く（URL は講師や先輩に確認してください）
2. 右上の「Fork」ボタンをクリックする
3. 自分のアカウントを選んで「Create fork」をクリックする
4. フォーク完了後、URL が `github.com/あなたのユーザー名/...` になっていることを確認する
5. ページに `forked from ...` と表示されていることを確認する

### 演習2: フォーク元を確認しよう

1. フォークしたリポジトリのページで `forked from ...` のリンクをクリックする
2. 元のリポジトリのページに移動することを確認する
3. 元に戻って、自分のフォークと元のリポジトリを見比べてみよう

### Reset & Retry

⚠️ うまくいかなかったときだけ実行してください。

フォークはGitHub上の操作なので、やり直すには：

```
1. フォークしたリポジトリのページを開く
2. 「Settings」タブをクリックする
3. ページ最下部の「Danger Zone」にある「Delete this repository」をクリックする
4. 確認のためリポジトリ名を入力して削除する
5. 再度フォーク操作を行う
```

---

[< Previous: SSH鍵を設定しよう](../01-github-basics/04-ssh-setup.md) | [Back to Index](../../../README.md) | [Next: git clone — リポジトリをローカルに持ってくる >](02-clone.md)
