# この本について

[git book版はこちらから](https://imaizume.gitbook.io/git-drill/-LMR6DYjovjrTX3cyT6K/)

## この本は何?

TODO: 挿絵

この本&#x306F;**「理論よりも実践で覚えられるGitコマンドの演習問題集」です。** Git Drillには、既存のgit関連の技術書・教材にはない3つの特徴があります。

1. **実践ファーストな内容構成**
2. **結果の再現性を保証**
3. **安全な失敗が可能な環境**

### 1. 実践ファーストな内容構成

TODO: 挿絵

例えば自転車に乗る練習を想像しましょう。 乗れるようになる前に、**自転車の動く原理やバランスの取り方を教科書等で学んだ人(=理論)はほぼいないはずです。** そうではなく、**とりあえず実際に乗ろうとして何度も転びながらバランス感覚を身につけ乗れるようになった人(=実践)が多いのではないでしょうか。**

**それはGitでも同じことです。** どんな技術でも、いくら理論を知っていても、実践で乗れるようにならなければ、身に付いていないのと同じです。 しかしネットも書籍も、**ほとんどが理論がメインのものばかりで、実践に重きを置いた教材はなかなかありませんでした。** **「gitの初心者にも、まず** `add` `branch` `commit` **等のgitコマンドを早く使えるようになってほしい、そのためにとにかく実践 = 自分の手でコマンドを入力し、表示された結果を見るループを繰り返してほしい :exclamation:」** 自分はそんな思いでこの演習問題を作りました。

### 2. 結果の再現性を保証

TODO: 挿絵

gitの学習を困難にする理由の1つは、同じコマンドを実行しても、**常に同じ状態が再現できるわけではないという点です。** その理由は、**gitがそれ単体では機能せず、管理対象のファイルとセットで機能するためです。** つまり**管理対象のファイルの状態まで一緒にしなければ、同じ状態を再現することはできないのです。** たとえば同じ `git add` をするにも、対象が単純なテキストファイルかもしれませんし、javaやHTMLなどのプログラムかもしれません、もしかしたら画像ファイルかもしれません。

これはプログラミング言語の学習と大きく異なる特徴の1つです。 「ネット上で見かけたgitコマンドを自分のリポジトリで試したけれど、なんかうまくいかなかった。」という経験のある方もいるかもしれません。

そこで本書では、**誰が進めても同じ答えが再現できるよう、演習課題のサンプルリポジトリを用意しました。** リポジトリの内容は簡単なテキストファイルで構成しているので、**プログラム言語を知らない方でもgitの学習に集中できるようになっています。**

### 3. 安全な失敗が可能な環境

TODO: 挿絵

gitの学習を阻害する別の要因として、**実際のプロジェクトでの実行が難しいという点もあります。** 誤った操作により望まない状態になった時に、**元の状態に戻す方法が分からず、どうしても実行するのを不安に思ってしまうためです。**

しかし演習問題用のリポジトリ上でなら、どんな失敗をしてもやり直しが効きます。 最悪の場合でも `git clone` をやり直せば状態はリセットされますし、どこかに影響を与えることもありません。 まさに演習問題を通じて**何度でも「安全に失敗」することができます。**

## 読む/解くと何が得られる?

TODO: 挿絵

### 1. 具体的なgitの操作方法の記憶定着

自分の手を動かしてgitコマンドを繰り返し入力・実行することで、まずは特定のコマンドをしっかり記憶に定着させます。

### 2. コマンドの意味理解

コマンドの使い方を記憶した後に、図説や動画を見ながら振り返ることで、自分の操作に対する意味理解を促進します。

### 3. 操作と結果の対応の想像力

具体的な操作と意味理解を脳内で紐づけることができれば、次第に実行結果を想像し必要なコマンドを暗算のように導き出せるようになります。

### 4. 特定の運用パターンやアンチパターンの理解

本書では、安全で基礎的な使い方だけではなく、応用的または誤った使い方も「安全に」学ぶことができます。よって安心してアンチパターンを学習し、本番でのトラブル対応力を身につけられます。

## 対象読者

### gitコマンドの概要を知りたい

* そもそもどんなコマンドがあるのか知りたい
* 各コマンドが何を意味するのかを手を動かしながら理解したい
* コマンドにはどんなオプションがあるのか知りたい

### gitの操作とソースコードの状態の関係を確かめたい

* 各コマンドで何が起きているのか分からない
* 調べたコマンドが思ったとおりに動かない
* 内部の挙動やエラーメッセージに対する理解が追いつかない

### gitの操作を練習したい

* 手を動かしてコマンドを覚えたい
* 手軽に試して失敗できるサンプルプロジェクトがほしい

## 必要なもの

### 必須事項

* gitを使えるようになりたいという意思
* 先に手を動かすことができる行動力・モチベーション
* gitコマンドをターミナルで使える環境 (コマンド理解のためSource TreeなどのGUIツールは非推奨です)

### 推奨事項

* 基本的なターミナル操作力 (最低限以下のコマンドが使えると良いです)
  * `cd`
  * `ls`
  * `vi`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://imaizume.gitbook.io/git-drill/-LMR6DYjovjrTX3cyT6K/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
