Git commitされずに困った話 git add . とgit add -Aの違い

いつものようにローカルリポジトリで変更したファイルをgit addとcommit、pushをしてリモートリポジトリに反映させようとしたのですが、リモートリポジトリに反映されません。

git status で確認

何か問題が発生したとき、git statusで確認します。

git statusは、今のローカルリポジトリの状況を返してくれます。

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   ../../public/css/style.css

no changes added to commit (use "git add" and/or "git commit -a")

modified: ../../public/css/style.css(変更したファイル)の文字が赤くなっていたので、うまくadd出来ていないことが分かりました。

因みにaddが出来ている場合、変更したファイル名が緑色になります。

原因

いつも私は、addする際は、git add . としていました。

今回も同様にgit add .をしてcommitをしようとしましたが、うまくいきません。

そこでgit add .の意味を調べてみました。

すると、git add .は、カレントディレクトリ以下の変更があった全てのファイルがaddされるとのことでした。

カレントディレクトリだと⁉ということで、ターミナルで確認すると、結構下の階層でaddしていました。

したがって、カレントディレクトリより上の階層は、addの対象外だったという訳です。

解決方法

リポジトリのルートディレクトリで再度、git add .とすれば、しっかりaddされます。

$ pwd
ルートディレクトリ
$ git add .

また、git add -Aというコマンドは、変更のあった全てのファイルがaddされます。

したがって、カレントディレクトリという制限がありません。

とりあえず、変更した全てのファイルをaddしたい場合、git add -Aがオススメであることが分かりました。

$ git add -A

変更したファイル名を特定してaddすることでも解決はできます。

$ git add 変更したファイル名