git とは
バージョン管理システムのこと
- バージョン管理:変更履歴を保存・管理すること
- 目的:任意の状態にファイルを戻せるようにするため
- 利用機会
- ① 変更したけど、前の状態に戻したい!➡︎すぐに戻せる
- ② いつ・誰が・どんな変更をしたか分かる➡︎ 複数人での共同開発が可能!!
- gitを使わないとどうなるのか?
- → 変更 ➡︎ 保存 ➡︎ やっぱ前の状態に戻したい ➡︎ 手作業で戻す = human errorの原因…
- → 変更後、随時ファイル保存してバージョン管理 = ファイルの数が膨大に&ファイルの命名ミス➡︎正確なバージョン管理✖︎
- ➡︎ git を使わないことで多くの不都合が起こりやすくなる!
gitのイメージ
-
スナップショット: 一場面を切り取ったもの
<<写真>>
■ git = 変更履歴を保存・管理
→ 変更履歴をスナップショットとして保存
→ スナップショット・・・+αデータ:変更日時・変更者を保存する
→ 「いつ・誰が・どのファイルに・どんな変更をしたか」がわかる!!
変更時のファイルの移り変わり/開発フロー
- ワークツリー:ソースコードを編集するファイルがある、 Git管理下のディレクトリ
→ ファイルの変更をするディレクトリ(別名:作業ディレクトリ・ワーキングツリー) - ステージングエリア(別名:インデックス):コミット前にスナップショットを配置する領域
→ ワークツリーから直接、ローカルリポジトリにいかない。
→ 「add」して初めて、Git 管理下にファイルを移動させられる - リポジトリ:ステージングエリアのスナップショットを保存する領域
= コミットを記録する領域
→ ローカルリポジトリ:それぞれのPCにあるリポジトリ(localのスナップショットを保存する領域)
<<写真>>
※ ステージングエリア&ローカルリポジトリ=ワークツリー内部にある領域
→ 構造:ワークツリー ▶︎ .git ▶︎ ステジングエリア・ローカルリポジトリ(.git配下にあるファイルのみgitのバージョン管理対象になる)
※ 「コミット」2つの意味
① ステージングエリア → ローカルリポジトリ :スナップショットを登録すること
② ローカルリポジトリにあるスナップショットそのもの
「ステージングエリア」の存在意義
■ Git の考え方:コミット履歴は綺麗な方が良い
→ 理由:コミットが綺麗 = 任意の変更地点に戻りやすくなるから
→ 「コミットが綺麗」とは: 一つの変更目的=一つのコミット
<<写真>>
流れ | 領域 | 状態 |
---|---|---|
[1] | ワークツリー | それぞれの目的で変更したスナショが多数 |
[2] | ワークツリー→ステージングエリア | ある目的で変更した一つのスナップショットを add |
[3] | ステージングエリア→ローカルリポジトリ | ある目的で変更した一つのスナップショットのみ保存 |
[4] | [2][3]繰り返し |
▶︎ ステージングエリア なし
→ ワークツリーにあるすべてのスナップショットがローカルリポジトリに登録される
→ どういう目的でどういう変更がなされたのか分からなくなる
Git を使う
Gitをはじめる → ユーザー名&メアド登録 なぜ?
共同開発時する際:誰がコミットしたの?→他のユーザに伝えるため
gitconfig(アカウント作成に使うコマンド)の基本
- 参考
-
https://qiita.com/C_HERO/items/c35e679f0b03a5f06469
- → -- system/global/local オプション 違いと使い分け
-
https://www.sejuku.net/blog/72246
- → gitconfigコマンドの説明
-
https://qiita.com/C_HERO/items/c35e679f0b03a5f06469