Linuxとコマンドラインの基礎

Gitで管理しているプロジェクトの .gitignore に「build/」と書いたが、以前にコミットした build/out.log の変更が、git status に表示され続ける。理由として、正しいものはどれか。

  1. A.gitignore はまだ追跡していないファイルにだけ効くので、追跡中のファイルは git rm --cached で外す必要があるから
  2. B.gitignore にはディレクトリを書くことができず、無視したいファイルの名前を1つずつ書く必要があるから
  3. C.gitignore は、そのファイル自体を git add してコミットするまでは、どのファイルにも効かないから
答えと解説を見る

正解:A. .gitignore はまだ追跡していないファイルにだけ効くので、追跡中のファイルは git rm --cached で外す必要があるから

.gitignore は、まだ追跡していない(一度もコミットや git add をしていない)ファイルを、git status の一覧や git add の対象から外すための設定です。すでに追跡しているファイルは、.gitignore に書いても追跡が続くので、変更が表示され続けます。git rm --cached build/out.log を実行すると、作業ディレクトリのファイルは残したまま追跡だけをやめ、そのことをコミットした後は .gitignore の指定が効きます。シミュレーションの出力やビルドの結果のような大きな生成物は、最初から .gitignore に書いておくのが安全です。

  • A. 正しい。追跡中のファイルには .gitignore は効かず、git rm --cached で追跡を外します。
  • B. 「build/」のように末尾にスラッシュを付けて書くと、build という名前のディレクトリの中身全体を無視できます。
  • C. .gitignore は、作業ディレクトリにあればコミットしていなくても効きます。ただし、チームで同じ設定を使うためにコミットしておくのが一般的です。
この分野を解く 分野ページへ

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Linuxとコマンドラインの基礎のほかの問題

  1. Linuxの標準的なディレクトリと、そこに置かれるものの組み合わせとして、正しいものはどれか。
  2. Linuxの /proc ディレクトリの説明として、正しいものはどれか。
  3. ディレクトリ /home/alice/data があり、カレントディレクトリは /home/alice/work である。「cd ../data」を実行してから「pwd」を実行したときに表示されるディレクトリとして、正しいものはどれか。
  4. ホームディレクトリで「ls」を実行すると notes.txt だけが表示され、「ls -a」を実行すると「.」「..」「.bashrc」「notes.txt」が表示された。この結果の説明として、正しいものはどれか。
  5. 上のコマンドを順に実行したとき、最後の2つの cat の結果として、正しいものはどれか。