Linuxとコマンドラインの基礎
Gitで管理しているファイル main.c を編集した後、「git commit -m "fix"」だけを実行したところ、「no changes added to commit」と表示されてコミットされなかった。理由として、正しいものはどれか。
- Aコミットする前に git push で、変更を共有のリポジトリに送っておく必要があるから
- Bコミットに含める変更は、先に git add でステージングエリアに登録しておく必要があるから
- CGitはファイルを保存したときに自動でコミットするので、git commit を実行する必要がないから
答えと解説を見る
正解:B. コミットに含める変更は、先に git add でステージングエリアに登録しておく必要があるから
Gitでは、作業ディレクトリで編集した変更のうち、git add でステージングエリア(インデックス)に登録したものだけが、次の git commit で記録されます。この2段階のしくみにより、編集した複数の変更のうち、関係のあるものだけを選んで1つのコミットにできます。git status を使うと、どの変更がステージングされているかを確かめられます。追跡しているファイルの変更をまとめて登録してコミットする git commit -a という書き方もあります。
- A. git push はコミットを共有のリポジトリに送るもので、コミットした後に使います。
- B. 正しい。git add でステージングした変更だけがコミットされます。
- C. Gitは自動ではコミットしません。どの変更をいつ記録するかは、利用者が git add と git commit で決めます。