異なるリポジトリ状態でのテスト
このステップでは、リポジトリにいくつかの変更を加え、git status --porcelain
がそれらをどのように報告するかを確認します。これにより、porcelain 出力で使用されるさまざまなコードを理解するのに役立ちます。
まず、正しいディレクトリにいることを確認します。
cd ~/project/my-time-machine
次に、新しい追跡されていないファイルを作成しましょう。このファイルを notes.txt
と名付けます。
echo "Some random notes" > notes.txt
再度 git status --porcelain
を実行します。
git status --porcelain
このとき、次のような出力が表示されるはずです。
?? notes.txt
??
は、notes.txt
が追跡されていないファイルであることを示しています。Git はこのファイルを認識していますが、現在そのバージョンを管理していません。
次に、前にコミットした message.txt
ファイルを変更しましょう。このファイルに別の行を追加します。
echo "Hello again, Future Me" >> message.txt
>>
演算子は、テキストを既存のファイルに追加します。上書きするのではありません。
再度 git status --porcelain
を実行します。
git status --porcelain
このとき、次のような出力が表示されるはずです。
M message.txt
?? notes.txt
M
は、message.txt
が変更されたことを示しています。M
の前の空白は、変更が作業ディレクトリにあるが、まだステージされていないことを意味します。notes.txt
の ??
は、まだ追跡されていないためそのままです。
最後に、git add
を使用して変更された message.txt
ファイルをステージしましょう。
git add message.txt
そして、最後に一度 git status --porcelain
を実行します。
git status --porcelain
このときの出力は次のようになるはずです。
M message.txt
?? notes.txt
M
が最初の列に表示されているため、message.txt
がコミットのためにステージされたことを示しています。2 番目の列の空白は、ステージされてから作業ディレクトリにさらなる変更がないことを意味します。notes.txt
はまだ追跡されていません。
これらのコード(追跡されていない場合は ??
、変更されたがステージされていない場合は 2 番目の列に M
、ステージされた変更の場合は最初の列に M
)を理解することは、git status --porcelain
の出力を迅速に解釈するための重要なポイントです。