結論から書くと、
変更とは、ファイルの修正、作成(追加)、削除のことであり、
git add . は、作業ディレクトリ以下の変更があったすべてのファイルをインデックスに追加し、
git add -u は、修正と削除があったすべてのファイルをインデックスに追加し、
git add -A は、変更があったすべてのファイルをインデックスに追加する。
というのが3つの違いになる。
以下で、実際にそのようになることを確認する。
下準備
修正するファイル(modify.py)と削除するファイル(delete.py)をあらかじめ作成し、
一度コミットしておく。
①リポジトリを作成する。
mkdir sample
cd sample
git init
②ファイルを作成する。
touch modify.py
touch delete.py
③ファイルをインデックスに追加する。
git add modify.py
git add delete.py
④コミットする。
git commit -m "modify.pyとdelete.pyを追加"
本題1
ここでは、ファイルの修正、作成(追加)、削除による処理の違いを確認するため、
あらかじめ作成した modify.py の修正、delete.py の削除を行い、
作成するファイルとして create.py の作成を行う。
そして、git add . と git add -u と git add -A の違いを確認する。
①ファイルを「修正」する。
今回は、Pythonで「Hello World!」と出力するプログラムに修正する。
vim modify.py
i で挿入モードに切り替え、以下のように入力する。
print("Hello, World!")
入力後、<Esc> でノーマルモードに戻り、:wq <Enter> で保存・終了する。
②ファイルを「削除」する。
rm delete.py
③ファイルを「作成」する。
touch create.py
④それぞれの実行内容を確認する。
git add -n .
git add -n -u
git add -n -A
git add -u は修正と削除があったすべてのファイルが、
git add . と git add -A は変更があったすべてのファイルが追加されることが確認できる。
本題2
ここからは、作業ディレクトリによる処理の違いを確認するために、
新たに作成したディレクトリ(sample1)を作業ディレクトリとして、
そこでファイル(create1.py)の作成を行う。
そして、git add . と git add -A の違いを確認する。
①ディレクトリを作成する。
mkdir sample1
②作業ディレクトリを移動する。
cd sample1
③ファイルを「作成」する。
touch create1.py
④それぞれの実行内容を確認する。
git add -n .
git add -n -A
git add . は作業ディレクトリ以下の変更があったすべてのファイルが、
git add -A は変更があったすべてのファイルが追加されることが確認できる。