はじめに
業務でGitを触る中で、これまでぼんやりと理解したつもりになっていた部分や誤解していた部分が最近はっきりしました。
以下では、その中身と関連して、ファイルに変更を加えるgit command一覧についてまとめました。
初心者向けに、このcommandを使わなければ、変更内容が消えたりすることはない。という視点でのまとめです。
結論
- ブランチによるバージョン管理は、別々の世界線を設けているのではなく、同じ世界線を別視点で見ているだけ
Gitのバージョン管理について
GItはバージョン管理ツールです。
Gitの謳い文句として、
「文章_A.txt, 文章_B.txtのようにコピーを作成するバージョン管理から脱却しよう」
というようなことが言われると思いますが、まずはこれについて詳しく書いていきます。
具体的にどういうふうに管理しているか
具体的な手順です。
- ファイル作成、保存
- git addで記録したい内容を選択
- git commitで選択した内容を記録
行ったcommitは、commit hashという数字とアルファベットの組み合わせで名前がついていて、その名前でいつの変更かを管理しています。
本題:ブランチについて
branchとは、厳密に言うとこのコミットのあとにこのコミット、次にこのコミットという変更履歴を記録したもの。
ブランチはファイルを持っていません。
そのため、ブランチを変更しても、同じディレクトリを見ている限り、ファイル内容は同じです。
ブランチAとブランチBで違う変更作業を行っていたとして、ブランチAでファイルを変更しctrl+Sで保存、ブランチBに移動して同じファイルを変更してctrl+Sで保存したとします。
ここで再度ブランチAに戻ってたとしても、ブランチAでの変更時点には戻りません。
これはctrl+Sでなく、git commitしても、git checkoutでブランチの移動を行うだけではファイルの変更は起こりません。もとの変更内容を手元に持ってきたければ、ブランチの移動をするたび、毎度pullする必要があります。
ファイルに変更を加えるgit command一覧
ブランチの変更だけでは、ファイル内容はもとに戻らないということで、以下では、ファイルに変更が加わるgit commandをまとめていきます。
git pull
最新のコミット内容との差分をファイルに反映させる
git checkout ファイル名
ファイルの変更内容を捨てて、最新のcommitの状態に戻す。
git clone ~
git repositoryを、ディレクトリ内にダウンロードします。
git reset
git checkoutファイル名が、ファイル単体をもとに戻すのに対し、管理しているファイル全体をもとに戻します。
git clean
バージョン管理されていないファイルを削除。
使うものでこれくらいだと思います。他にあれば追記します。