Gitとは
データを複数の場所で管理することを可能にしたシステム。
Gitを利用する2つのメリット
1つ目は、プログラムを以前の状態に変更することができる。
誤って消してしまったコードを復活させたり、新たなバグ発生前のコードに即座に戻したり、上書きする前のコードを見つけたりすることができるようになります。
2つ目は、変更履歴を記録できる。
どこを修正したのか瞬時に分かるため、修正箇所の確認漏れを防止できます。
専門用語
リポジトリ
ファイルやディレクトリの状態を記録する場所。
ローカルリポジトリ
ユーザのPCにあるリポジトリをローカルリポジトリと呼びます。
リモートリポジトリ
オンライン上で機能するリポジトリです。複数人とリポジトリを共有することができます。
ワーキングツリー
ファイルを編集する場所。
インデックス
コミットするためのファイルを一時的に保管しておく場所。
コミット
インデックスに置いたファイルをローカルリポジトリに保存する操作
プッシュ
ローカルリポジトリをリモートリポジトリへアップロードする操作。
クローン
リモートリポジトリからローカルリポジトリをダウンロードし、複製する操作。
プル
リモートリポジトリからファイルの変更点のみをローカルリポジトリにダウンロードする操作
ブランチ
業履歴を枝分かれさせて記録できる操作。
例えばAブランチ、Bブランチという2つのブランチを作ることで、作業の種類ごとに履歴を残すことができます。また、2つのブランチは互いの変更に影響を受けないため、閉口して作業を進めることができます。
マージ(ファストフォワード)
mainブランチがAブランチ作成時から進んでいない状況での統合の仕方。Aブランチは派生元のmainブランチの履歴を含んでいるため、mainブランチをAブランチの先頭に移動させるだけで、Aブランチの内容を取り込むことができます。
マージ(ノン・ファストフォワード)
mainブランチがBブランチ作成時から進んでいる状況での統合の仕方。
この場合はマージコミットと呼ばれる新しいコミットを作成し、mainブランチをマージコミットに移動させます。その後、Bブランチをマージコミットに移動させます。
リベース
mainブランチがBブランチ作成時から進んでいる状況でも、マージコミットを作成せずにBブランチと統合する操作。マージとは異なり、変更履歴を一本化するのが特徴。
コンフリクト
2つ以上のブランチを統合する際、「同じファイルの同じ行」を編集していた場合に起きる現象です。この時Gitは、開発者自身にコンフリクトの解消を求めます。
フェッチ
リモートリポジトリの最新情報をローカルリポジトリに取り込む操作。
そのためにローカルリポジトリでは、「リモート追跡ブランチ」を生成します。ローカルリポジトリは「リモート追跡ブランチ」と統合するだけでリモートリポジトリの変更点をローカルリポジトリ内に反映させることができます。
参考記事
https://qiita.com/gold-kou/items/7f6a3b46e2781b0dd4a0
https://qiita.com/gakisan8273/items/0e0ad1fee2a7c623f8d6
https://qiita.com/Tetsu_Oikawa/items/d2426cb49eb379afad54
https://qiita.com/satona-oinuma/items/97205ca0ce04dcae2adb
https://qiita.com/chihiro/items/5d8cb21457a9c707c565