.gitignore文件在忽略一些我們不想控制的文件時非常有用。不幸的是,當文件已經受版本控制時,它不能使用。例如,我的.gitignore(已經添加到git中)文件可能與我的同事想要的文件不同(例如,我想忽略Vim文件)。每當我對這個文件進行更改時,git會將其顯示爲修改後的文件。所以我的問題:Git:忽略版本控制文件
- 有什麼辦法可以忽略某個文件的變化,它已經由Git控制?!
- 有什麼辦法可以提交這些更改,但只保留給我自己嗎?顯然,我不想使用分支,因爲我正在某個分支上工作。
.gitignore文件在忽略一些我們不想控制的文件時非常有用。不幸的是,當文件已經受版本控制時,它不能使用。例如,我的.gitignore(已經添加到git中)文件可能與我的同事想要的文件不同(例如,我想忽略Vim文件)。每當我對這個文件進行更改時,git會將其顯示爲修改後的文件。所以我的問題:Git:忽略版本控制文件
如果要排除特定於進程的文件(如Vim臨時文件),請編輯(本地)文件.git/info/exclude
並在其中添加排除模式。此文件專爲特定於開發人員的排除而設計,而不是針對項目範圍排除設計的.gitignore
。
簡短的總結是,每個人都應該對添加到.gitignore
的內容達成一致。對於不同意的文件,請使用.git/info/exclude
。
我真的不能回答這個一般性問題(有混帳忽略跟蹤的文件) - 它給我的印象是一個功能,將遠遠超過有用的更有害。
但是,gitignore manual page指定了幾種配置排除文件模式的方法。
特別是,它提供了有關如何使用這些不同的方式明確指示:
- 模式應該是版本控制,並通過克隆分發到其他存儲庫(即文件,所有的開發者都希望忽略)應該進入
.gitignore
文件。
也就是說你.gitignore
文件不應該由你的同事不同 - 它如預期運行。
模式,其是針對特定的倉庫,但它並不需要與其他相關資料庫(例如,住在倉庫裏,但具體到一個用戶的工作流程輔助文件)共享應該進入
$GIT_DIR/info/exclude
文件。用戶想要的git在所有情況下(例如,備份或選擇用戶的編輯器生成臨時文件)忽略模式通常進入由
core.excludesfile
用戶的~/.gitconfig
指定的文件。
你有它。在您的~/.gitconfig
文件中指定一個core.excludesfile
文件路徑,然後放入要排除的模式。
使用git-update-index暫時忽略更改所有已經在版本控制下的文件:
git update-index --assume-unchanged <files>
撤消使用:
git update-index --no-assume-unchanged <files>
也有看skip-worktree
和no-skip-worktree
選項更新-index如果你需要這個堅持過去一個git-reset
工作就像一個魅力!謝謝! –
我寫過關於three ways of excluding files其他地方。
總結:
列表中較低的項目優先於較高的項目,並且在文件中的任何模式中的項目前面的!
顛倒先前的排除。
這種範例在Git的其他地方看到。例如,如果您使用的是子模塊,則要使用的子模塊的url位於存儲庫中的.gitmodules
文件中,但您可以覆蓋該URL以在.git/config文件中使用。
它不適用於已經版本化的文件 –
這裏是廣義的,ubiquitos(而不是個人)根據SmartGitHG viusal接口使用Git的解決方案:
你可以使用這個命令來得到你想要的。
git rm --cached path/to/file
或
git rm -r --cached path/ignore/dir
這隻會從混帳刪除曲目,不會刪除實際的文件。
然後,您可以編輯忽略文件以解開這些文件或目錄。
沒有答案回答主要問題 - 第1號,包括接受的問題。問題是關於忽略已經被控制的文件,而不是.gitignore不會排除會做這項工作 – shealtiel
git-update-index的答案是正確的答案。 – Jason