前回は作成途中や分岐先のバージョンに移動する Checkout や分岐版を作成する ブランチ操作を行いました。
続いて、リモートレポジトリとの連携を記載した所ですが、今回は、その前段階の準備としてローカル側のリポジトリの構成を理解します。
目次
作業履歴の確認
先ず、ブログ記事用に作成したローカル側のレポジトリ Test-Project。前回の記事から少し変更していますが、次のような作業履歴であると仮定して話を進めます。
初期化後、Commit1.txt ~ Commit4.txt のファイルを作成し、その都度コミット。但し、Commit3作成後に、Commit2に戻り(Checkout)、Commit4を実施し、switch -c にてBranch1を作成。
その後に、Commit 5.txtを作成したという内容。
構成イメージ
作業履歴をローカル側レポジトリの構成イメージに置き換えます。
Working Area, Staging Area, Local Repositoryの3領域から構成されます。以下の3点に気が付くと思います。
- Commit1, 2, 4.txtはWork AreaとStaging Areaにある
- Commit3.txt は所在が見えない
- Commit5.txt はWork Areaにのみある
Work Area, Staging Areaとは?
上の箇条書き1番目で、Commit1, 2, 4.txtはWork AreaとStaging Areaにあると書きました。
先ず、Work Areaは、test-projectのフォルダ下で、コードを書く所です。
Staging Areaは、Commitするファイルを置いておくエリア。ls-files コマンドで中身を確認できます。
Staging AreaにあるのはCommit1, 2, 4.txtで、Work AreaにあるCommit5.txtは無く、上の構成イメージと一致していることがわかります。
Commit3.txtはどこに?
今は、Branch1にいますが、Commit3.txtはMasterブランチ側で作成したファイルです。従って、Masterブランチに切り替えてやれば復活します。
git switch master
Masterに切り替えた後、logとstaging areaを確認してみました。Commit3.txtが復活しています。逆にBranch1のCommit4, 5.txtは消えました。
Commit5.txtの状態は?
上でMasterブランチに切り替えましたが、Commit5.txtは、Staging Areaに乗せていないので、ブランチは関係ありません。引き続きWork Areaで確認することができます。
ここで、次のコマンドを打ちます。
git status
Commit5.txt が Untracked file であると警告されました。つまりStaging Areaに乗っていないということです。
なお、Staging Areaに乗せてやるには、次のいずれかのコマンドを使います。「.」とした場合、Work Areaの全ファイルをStaging Areaに送ることができます。
git add Commit5.txt git add .
構成イメージと操作のまとめ
Local Repositoryは、Work Area, Staging Areaから構成されてます。Addコマンドで、Work AreaのファイルをStaging Areaに乗せ、CommitでLocal Repositoryへと作業来歴を記録させます。
その後は、Checkout で特定のCommit まで作業を戻したり、Switchでブランチを切り替えることができます。
今回はここまでとします。次回はリモートレポジトリ(Git Hub)側との連携を行います。