【停止中】Gitを理解するためにProGitを読んでみた。

# 記事の目的
+ Pro Gitで学んだことを人に説明するつもりで書いて記憶に定着させるため。
+ Gitの根幹を理解した上で使えるようになるため。
+ 内容が多すぎたのでリンクを使うようにしました。

:::note info
Pro Gitを個人的に解釈しただけなので二次情報（ロスがある）と心得てください。
分かりやすい図解もPro Gitにあります。
:::


# 全体の概要　Pro Gitの何章
１章：バージョン管理システム（VCS）とGitについての解説。※Gitの環境構築（インストールと初期設定）の方法はPro Gitで確認して下さい。
２章：Gitの基本(本書で最も読んでほしい場所)
３章：Gitのブランチモデルについて
４章：Gitのサーバー機能について
5章：分散型のワークフローについて紹介し、更にGitを使って運用していく方法の解説
6章：Gitのホスティングサービスである、GitHubとその機能についての解説
7章：高度なGit機能についての解説
8章：Git環境をカスタマイズする方法についての解説
9章：Gitとそれ以外のVCSとの連携についての解説
10章：Gitの内部構造についての解説


# 第１章：VCSとGitについて
[バージョン管理ツール(VCS)とGitについて
](https://qiita.com/yuyas7/items/0819d55ae4b298e9cf3c)

# 第２章：Gitの基本
## 1.概要
+ 実際に使う基本コマンドの全て取り上げている。
リポジトリの設定や初期化、ファイルの追跡、変更内容のステージやコミットなど
+ 他にも
Gitで特定のファイルを無視させる方法、ミスを簡単に取り消す方法、プロジェクトの歴史や各コミットの変更内容を見る方法、リモートリポジトリとの間でのプッシュやプルを行う方法についても説明する。
:::note info
例で使うGitライブラリは多言語へのバインディングが可能な"libgit2"をクローンしたものとします。
:::


## 2.Gitリポジトリの取得 "git init" | "git clone"
[Gitリポジトリの取得について](https://qiita.com/yuyas7/items/53aa78e438d8f689ace9)

## 3.変更内容のリポジトリへの記録
・上記2を実行した後に行えるようになる。
・作業コピー内の各ファイルに追跡されている(tracked)と追跡されていない(untracked)の２通りがある。
+ 追跡されているファイルとは
・直近のスナップショットに存在したファイルのことである。
・ファイルの状態には、三つの状態がある[変更されていない(unmodified)、変更されている(modified)、ステージされている(staged)]

+ 追跡されていないファイルとは
・追跡されているファイルのどの状態にも当てはまらないことです。
・直近のスナップショットに存在せず、ステージングエリアにも存在しないファイルのこと。

+ 最初にクローンした時の状態
・全てのファイルは「追跡されている」＆「変更されていない」状態
・チェックアウトしただけで何も編集していない状態だから。

+ Gitの流れ
1\.ファイルを編集すると、Gitはそれを「変更された」とみなす。
直近のコミットの後で変更が加えられたからです。
2\.変更されたファイルをステージ **git add [File名]** or **git add .**（変更されたファイル全部をステージする）
3\.それをコミットする **git commit -m ''** ''の間にコメントを入れる
4\.1に戻る（繰り返す）
![ファイルの状態の流れ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/414466/31fa7058-5598-a4cb-5577-8feb5e9320af.png)

+ "git status"について
・[ファイルの状態の確認 "git status"](https://qiita.com/yuyas7/items/b149123c9c3a28115dbc)
・[状態表示の簡略化 "git status -s"](https://qiita.com/yuyas7/items/73069bf68907b01cd32c)

+ "git add"について
・[新しいファイルの追跡について](https://qiita.com/yuyas7/items/5119920245cd1974f8f7)
・[変更したファイルのステージングについて](https://qiita.com/yuyas7/items/f6fcdf17b9f2f03197ae)

+ ".gitignore"について
・[ファイルの無視 "cat .gitignore"](https://qiita.com/yuyas7/items/5d3cf98d2df4c0c9a21b)

+ "git diff"について
・[ステージされている変更/されていない変更の閲覧 "git diff"](https://qiita.com/yuyas7/items/68b020ccd7e05026e415)

+ "git commit"について
・[変更のコミット "git commit"](https://qiita.com/yuyas7/items/a32a4ef56ca3b2c61e8e)
・[ステージングエリアの省略 "git commit -a"　オプション"-a"について](https://qiita.com/yuyas7/items/96afb72f0450a3717a8c)
+ "git rm"について
・[ファイルの削除 "git rm"](https://qiita.com/yuyas7/items/9f2e2412f644a342b45c)

+ "git mv"について
・[ファイルの移動 "git mv"](https://qiita.com/yuyas7/items/877ee0aa1b8e9cb23a5e)

+ "git log"について
・[コミット履歴の閲覧 "git log"](https://qiita.com/yuyas7/items/7ff89dadc241d9fa8324)

+ やり直しについて
・[作業のやり直し](https://qiita.com/yuyas7/items/f472999bc296cb57d97d)

+ リモートでの作業について
・[]()

+ 

## 15.作業のやり直し


## 16.リモートでの作業
### 16.1.リモートでの作業について
+ Gitを使ったプロジェクトで共同作業を進めていくには、リモートリポジトリの扱い方を知る必要がある。
+ リモートリポジトリとは
インターネット上あるいはその他ネットワーク上のどこかに存在するプロジェクトのこと。
複数のリモートリポジトリを持つこともできるし、それぞれを読み込み専用にしたり読み書き可能にしたりもできる。
+ リモートリポジトリの管理とは
・リモートリポジトリの追加
・不要になったリモートリポジトリの削除
・リモートブランチの管理や追跡対象/追跡対象外の設定
など

### 16.2.リモートの表示

### 16.3.リモートリポジトリの追加
### 16.4.リモートからのフェッチ、そしてプル
### 16.5.リモートへのプッシュ
### 16.6.リモートの調査
### 16.7.リモートの削除・リネーム

## 17.タグ
### 17.1.タグの一覧表示
### 17.2.タグの作成
### 17.3.注釈付きのタグ
### 17.4.軽量版のタグ
### 17.5.後からのタグ付け
### 17.6.タグの共有
### 17.7.タグのチェックアウト

## 18.Gitエイリアス


# 第３章：Gitのブランチ機能

# 4.所感
本気でGitを扱いたいのなら一次情報の[Pro Git](https://git-scm.com/book/ja/v2)の方を見た方がいいですよ。

# ex.参考文献
+ [Pro Git ver.日本語訳](https://git-scm.com/book/ja/v2)