git 忽略檔案的幾種方式以及應用場景

weixin_34146805發表於2019-01-14
  1. .gitignore檔案配置
    最常用的忽略設定, 可以設定整個專案要忽略的資料夾, 對於已經在track的檔案, 需要先移除track, 具體操作網上很多. 這種方式常用語忽略第三方庫, 臨時檔案和配置檔案, 關於配置檔案設定, 在網上找到一個不錯的辦法

引自:https://segmentfault.com/q/1010000000430426
對於充當模版的檔案,在檔名上加以區分然後用 Git 記住。比如說實際的配置檔案應該叫 database.conf,在寫好模版之後可以更名為 database.conf.example。Git 記錄 database.conf.example 但是忽略 database.conf。
每一個人克隆下來之後,複製一份 database.conf.example 為 database.conf 然後修改後者以符合本地的要求。由於後者是在 .gitignore 裡的,所以不會被記錄,也完全不需要 update-index。

  1. exclude檔案配置
    這個檔案在 .git/info/exclude 和 .gitignore檔案的配置方式相同, 不同點在於exclude中的配置不會影響其他人, 這個東西做了下實驗, 發現沒有效果, 可能是我姿勢不對, 目前也沒想到應用場景
  2. git update-index --assume-unchanged PATH
    在PATH處輸入要忽略改動的檔案, 例如: git update-index --assume-unchanged logs/*.log 將會忽略logs資料夾下的所有log字尾的檔案改動, 注意, 這個忽略並非是不記錄, 而是讓git假裝目標檔案沒有改變, 關於這個檔案的正確用法:

引自:https://segmentfault.com/q/1010000000430426
應用了該標識之後,Git 停止檢視工作區檔案可能發生的改變,所以你必須 手動 重置該標識以便 Git 知道你想要恢復對檔案改變的追蹤。當你工作在一個大型專案中,這在檔案系統的 lstat 系統呼叫非常遲鈍的時候會很有用。

  1. 你正在修改一個巨大的檔案,你先對其 git update-index --assume-unchanged,這樣 Git 暫時不會理睬你對檔案做的修改;
  2. 當你的工作告一段落決定可以提交的時候,重置改標識:git update-index --no-assume-unchanged,於是 Git 只需要做一次更新,這是完全可以接受的了;
  3. 提交+推送。
  1. git update-index --skip-worktree PATH

https://www.zhihu.com/question/25234996
--assume-unchanged 假定開發人員不會更改檔案。此標記旨在為無變化資料夾(如 SDK)改善效能。
--skip-worktree 用於命 GIT 不再染指特定檔案——即便開發人員可能更改它——的情形。例如,如果主原始碼庫上游承載某些即將投入生產的配置檔案而你不希望意外的提交影響到那些檔案,--skip-worktree 正是你的菜。

相關資料
git忽略已經被提交的檔案 評論有很多幹貨
git 中的 assume-unchanged 與 skip-worktree 的區別是什麼?
https://segmentfault.com/q/1010000004164349?_ea=513032

相關文章