前回、前々回でCodeCommitについて記載しておりますが、
今回はGitの使い方について少し補足致します。
私が最初に躓いたところを個人の備忘も兼ねて記載しています。
■ローカルリポジトリのブランチに設定したリモートリポジトリについて
ローカルリポジトリを作成した際(=git initで作成したローカルリポジトリとします)、
ローカルPC上に任意のフォルダがmasterブランチとなります。
その際、気をつけておきたいのが、
ブランチごとにリモートリポジトリを認識している為、仮に複数のローカルリポジトリ(ブランチ)を作成した場合、
その一つ一つに対してリモートリポジトリを認識させてあげる必要があります。
言葉だけでは中々イメージしづらいと思いますので、実例を下記しております。
状態1)git init にてlocalrepo3というフォルダをローカルリポジトリとしておき、既にリモートリポジトリを認識している状態とします。
状態2)状態1の実施後に、localrepo3と同階層にlocalrepo4というフォルダを新規作成し、git init を実行します。
上記の状態1、2の確認後、再度状態1を実施すると
もちろんリモートリポジトリは登録されています。
(何をやっているんだ?!って思う方もいるかと思いますが。。。笑)
つまり、
ローカルリポジトリのブランチごとにリモートリポジトリを認識しているってことです。
私は最初、「一度設定したリモートリポジトリがあれば、設定は引き継がれるもの」と思っていたのですが、
よく考えたらそんなわけないですよね。。。笑
■git init と git clone の違いについて
過去の記事では取り上げていませんが、git cloneというものがあります。
git clone は「リモートリポジトリを複製」します。
物は試しで実際にやってみます。
まずは、デスクトップ上に「localrepo5」フォルダを作成し、そこに移動し、フォルダ内を確認します。
普通にフォルダを作成しただけですので、特に変わった様子はないですね。
続いて、当該フォルダ上にてgit cloneを実行してみます。
この時、localrepo5フォルダの中がどうなっているかというと、
こんな感じになっています。localrepo5/repoがローカルリポジトリになっています。
では、localrepo5/repoに移動して、git remoteを実行するとどうなるでしょうか?
答えは、既に登録されています。
つまり、git clone することで
「リモートリポジトリの中身をダウンロード」+「リモートリポジトリの認識済み」となります。
ここがgti init との大きな違いです。
■一度コミットしたファイルを更に更新した場合の動作について
git add にて追加したファイルをgit commit でコミットした後に、
ファイル内容を更新した場合についてです。
現状が以下の時からスタートします。
localrepo-test.txtを修正し、git statusを実行してみます。
ここで重要なのは、「Changes not staged for commit」の部分です。
これは、「当該ファイルがステージングに存在していないこと」を意味しています。
ですので、
git add localrepo-test.txt をして、再度git statusを見てみます。
これで、当該ファイルがステージングまで移動しましたので、
あとはgit commit を実行すればリモートリポジトリへのPUSHが可能となります。
ダラダラと記載しましたが、ここで言いたいのは、
「一度ステージングに登録したファイルでも、一度コミットしてしまえば、作業ディレクトリに戻ってしまう」ってことです。
「一度ステージングに登録すれば、今後はgit add 不要だよね」って私は思っていました。。。笑
以上です。