Linux與命令列基礎

在以 Git 管理的專案的 .gitignore 中寫了「build/」,但以前提交過的 build/out.log 的變更,仍持續出現在 git status 中。理由是下列何者?

  1. A.gitignore 只對尚未追蹤的檔案有效,所以已追蹤的檔案必須用 git rm --cached 取消追蹤
  2. B.gitignore 中不能寫目錄,必須逐一寫出要忽略的檔案名稱
  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與命令列基礎的其他題目

  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. 依序執行上面的指令時,最後兩個 cat 的結果是下列何者?