# Git入門

サンプル シナリオを使って Git の基本について学習しましょう。

自分のコードにタイム マシンがあればいいのにと思ったことはありませんか? Git はまさにそれですが、それ以上のものです。

詳しくない方のために説明すると、Git とはコードの変更を追跡するのに役立つ**バージョン管理**システムです。 特定の時点でプロジェクトのスナップショットを保存すると、いつでもスナップショットに戻ることができるため、作業を危険にさらすことなく実験的な変更を加えることができます。

GitHub 自体は Git を中心に構築されたプラットフォームであり、Git プロジェクトをクラウドに保存して、他の開発者と共同作業することができます。

Git は複雑な面もありますが、あらゆる開発者にとって強力で必要なツールです。 この記事では、日常のワークフローで Git を使うために必要なすべてのツールについて説明します。

## 前提条件

このチュートリアルを実行するには、[Visual Studio Code](https://code.visualstudio.com/download) をインストールする必要があります。

## GitHub Desktop を使って Git の基本を学ぶ

標準の Git 操作には、コマンドを書くのではなく、視覚的に Git を操作できるアプリである GitHub Desktop をお勧めします。 このセクションでは、GitHub Desktop を使って、よく使う Git 操作を簡単に実行する方法について説明します。

### GitHub Desktop を設定する

GitHub Desktop を初めて使う場合は、それをインストールし、GitHub アカウントに接続する必要があります。

1. [GitHub Desktop をダウンロードします](https://desktop.github.com/download/)。
2. GitHub Desktop を開き、**\[Sign in to GitHub.com]** をクリックし、GitHub Desktop が自分のアカウントにアクセスすることを認可します。
3. GitHub Desktop に戻り、**\[Finish]** をクリックします。 これにより、GitHub アカウントの名前とメール アドレスが Git に追加されます。

### ローカル リポジトリを作成する

これで、**リポジトリ**を作成して Git への最初の一歩を踏み出すことができます。 リポジトリは、変更を追跡し、履歴を格納するプロジェクト フォルダーと考えてください。 まず、**ローカル** リポジトリを作成します。

1. GitHub Desktop で、**ローカルドライブに新しいリポジトリを作成** をクリックします。
2. リポジトリに `learning-git` という名前を付けます。
3. **\[Initialize this repository with a README]** を選びます。空の `README.md` ファイルが自動的に作成されます。

   > \[!TIP] README とも呼ばれる `README.md` ファイルをプロジェクトに含めるのが標準の方法です。 通常、README には、他のユーザーがプロジェクトを理解し、設定し、実行するのに役立つ情報が含まれています。
4. **リポジトリの作成**をクリックします。

### リモート リポジトリを作成する

先ほど作成したローカル リポジトリは、お使いのコンピューター上にあります。 次に、同じプロジェクトの**リモート** リポジトリを作成しましょう。これは、GitHub 上でホストされます。 リモート リポジトリをリンクすると、共同作業や作業のバックアップが簡単になります。

1. GitHub Desktop で、**\[Publish repository]** をクリックします。
2. 表示されるポップアップの **\[Publish repository]** をもう一度クリックします。
3. リモート リポジトリを表示するには、**\[View on GitHub]** をクリックします。

### 変更を行うスペースを設定する

リポジトリを作成したので、**ブランチ**について説明しましょう。 ブランチとは、基本的にプロジェクトのコピーです。既存の作業の安定性を危険にさらすことなく、そこで変更をテストできます。

リポジトリは、`main` ブランチを使って自動的に作成されます。これは、安定したプライマリ バージョンのプロジェクトと考えることができます。 たとえば、Web サイトのリポジトリの場合、`main` ブランチは訪問者が閲覧できるサイトに相当します。

新しいブランチを作成すると、プライマリ バージョンに影響を与えることなく、新しい機能に取り組むことができる安全なスペースが作成されます。 あなたとコラボレーターは、異なるブランチを使って複数の機能に同時に取り組むことができます。

変更作業を行うブランチをリポジトリに作成しましょう。

1. GitHub Desktop で、<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-git-branch" aria-label="git-branch" role="img"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg> **\[Current Branch]** ドロップダウン メニューを選び、**\[New Branch]** をクリックします。
2. 新しいブランチに「`readme-updates`」という名前を付け、**\[Create Branch]** をクリックします。

### プロジェクトのスナップショットを保存する

進行状況をブランチに保存するには、**コミット**を行います。 コミットは、特定の時点で作成したプロジェクトのスナップショットです。 実際には、初回のコミットは既に行っています。README を含むプロジェクトを初期化すると、GitHub Desktop によって、`README.md` ファイルを追加する初回のコミットが自動的に作成されます。

保存する作業のチャンクを完了したら、必ずコミットを行うようにしてください。 実行すると、その後にどれだけ変更を加えても、いつでもその時点に戻ることができます。

1. GitHub Desktop で、**\[Open in Visual Studio Code]** をクリックします。

2. VS Code で、次のテキストを `README.md` に貼り付け、変更を保存します。

   ```markdown copy
   Hello, World!

   This is a demo project for learning how to use Git.
   ```

3. GitHub Desktop に戻ると、先ほど README に加えた更新が表示されます。 左下の GitHub プロフィール画像の横にあるテキスト ボックスに「Update README」と入力します。 これは**コミット メッセージ**と呼ばれ、各コミットで加えた変更を追跡するのに役立ちます。

4. コミットするには、**\[Commit to readme-updates]** をクリックします。

### 変更をメイン ブランチに反映する

ブランチに加えた変更に問題がなければ、ブランチをリモート リポジトリに公開し、**pull request** を作成できます。 Pull request を使うと、提案された一連の変更をレビューし、あるブランチから別のブランチにそれらをマージできます。 この例では、`readme-updates` で加えた変更を元のブランチ `main` に反映する pull request を作成します。

1. **\[Publish branch]** をクリックして、変更内容を含む `readme-updates` ブランチをリモート リポジトリにプッシュします。

2. 提案された変更をレビューするには、**\[Preview Pull Request]** をクリックします。

3. **\[pull request の作成]** をクリックします。

4. 表示された GitHub ウィンドウで、pull request のタイトルを「Add a message to the README」に変更し、コメント ボックスに変更内容の簡単な説明を書きます。

5. **\[Pull request の作成]** をクリックします。

6. 変更を `main` ブランチに反映するには、ページの下部にある **\[Merge pull request]** をクリックします。

   > \[!NOTE] 他の開発者とプロジェクトに取り組んでいる場合、pull request がマージされる前に他のユーザーが pull request をレビューするのが標準の方法です。

7. ページの下部近くにある **\[Delete branch]** をクリックします。
   `main` にマージされたブランチを削除すると、リポジトリを整理し、操作しやすくすることができます。

### さらに変更を加える準備をする

最初の pull request のマージに成功しました、おめでとうございます! 変更を `main` ブランチに正常に反映できたら、次の変更の準備として、いくつかの手順を実行する必要があります。

1. GitHub Desktop で、`main` ブランチを使用していない場合は、<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-git-branch" aria-label="git-branch" role="img"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg> **\[Current Branch]** ドロップダウン メニューを選び、**\[main]** をクリックします。

   新しいブランチは現在選択されているブランチのコピーとして作成されるため、ほとんどの場合、新しいブランチを作成する前に `main` ブランチに戻る必要があります。
2. リモート `main` ブランチに変更が加えられたかどうかをチェックするには、**\[Fetch origin]** をクリックします。
3. 最後に、リモート `main` ブランチの変更をローカル `main` ブランチに反映するには、**\[Pull origin]** をクリックします。

これで、プロジェクトで Git を設定して使うために必要なスキルをすべて習得できました。

## コマンド ラインでの Git について理解を深める

GitHub Desktop は、日常的な Git のニーズに対応できるように設計されています。 開発者として成長するにつれて、Git 操作をより詳細に制御する必要がある場合や、より複雑なコマンドを使う必要がある場合など、通常とは異なる状況になることがあります。 そのような場合は、コマンド ラインで Git コマンドを記述する方法に切り替える必要があります。

### コマンド ラインを設定する

コマンド ラインを使い始めるには、事前にいくつかのツールを設定する必要があります。

1. GitHub Desktop で、<kbd>Ctrl</kbd>+<kbd>\`</kbd> キーを押してコマンド ラインでプロジェクトを開きます。

2. Windowsを使用している場合は、git</c0> を<c0>インストールします。 macOS と Linux、Git は既定でインストールされています。

3. [GitHub CLI](https://github.com/cli/cli?tab=readme-ov-file#installation) をインストールします。これにより、GitHub 関連のアクションをコマンド ラインからすばやく実行できるようになります。

4. GitHub から GitHub CLI の認証を受けるには、次のコマンドを実行します。

   ```shell copy
   gh auth login
   ```

**GitHub.com** で認証することを選び、画面上のプロンプトに従います。

1. コマンド ラインから GitHub Copilot CLI（コマンドラインインターフェース） をインストールして、Copilot を使用できるようにします。 「[GitHub Copilot CLI のインストール](/ja/copilot/how-tos/set-up/install-copilot-cli)」を参照してください。

### 複雑なコマンドを試してみる

これで設定は完了です。今後必要になりそうなコマンドを見つけて理解する方法を学習しましょう。 たとえば、誰かがオンラインで `git blame` について触れているのを見ても、何をするものなのかわからなかったとします。 次のコマンドを使って、Copilot に説明を依頼しましょう。

```shell copy
gh copilot explain "git blame"
```

Copilot により、`git blame` にはファイルの詳細な履歴機能があり、ファイルの各行を最後に変更した作成者とコミットを確認できることが示されます。 次のコマンドを使って自分で試してみてください。

```shell copy
git blame README.md
```

これはすばらしいツールですが、ご想像のとおり、ファイル対する責任の説明は非常に長くなる可能性があります。 たとえば、ファイル内の特定の行に対する最新の更新のみに関心があるとします。 Copilot に適切なコマンドを作成するよう依頼できます。

```shell copy
gh copilot suggest "Show me the blame for line 1 of README.md"
```

Copilot から、どのようなコマンドが必要かを聞かれたら、方向キーを使って **git command** を選び、<kbd>Enter</kbd> キーを押します。 Copilot から次のコマンドが提案されます。

```shell copy
git blame -L 1,1 README.md
```

方向キーを使って **\[Execute command]** を選び、<kbd>Enter</kbd> キーを押します。
`README.md` の 1 行目を最後に変更した作成者とコミットが表示されます。

## レビューと次の手順

この記事では、GitHub Desktop を使って Git の基本を説明し、次のような重要用語を学習しました。

* **リポジトリ**: プロジェクト内のファイルに加えられたすべての変更を保存するフォルダー。
* **コミット**: 特定の時点で作成されたプロジェクトのスナップショット。
* **ブランチ**: プロジェクトのコピー。ここで一連の変更に取り組むことができます。
* **Pull request**: あるブランチから別のブランチに変更をマージする要求。

より複雑な Git 操作をコマンド ライン上で実行することについても説明しました。 新しいコマンドと機能を理解し、検索するために `gh copilot explain` と `gh copilot suggest` を試しました。

次は、学んだことを自分の仕事に活かしてみましょう。 GitHub Desktop を使用して既存のプロジェクトに Git を追加します(<kbd>Ctrl</kbd>+<kbd>O</kbd> (> Windows/Linux) または <kbd>Command</kbd>+<kbd>O</kbd> (Mac) を使用すると、バージョン管理の利点を自分で体験できます。