2013-04-03 60 views
2

使用git rm <file>可以在本地刪除文件,從版本中刪除文件並在存儲庫中刪除文件。 git rm --cached <file>幾乎相同,但將文件保存在本地工作副本中。如何從版本控制中除去文件/文件夾,但將其保存在Git的存儲庫中?

是否有可能從版本控制中刪除文件/文件夾(因此忽略它的更改)將其保存在存儲庫中,以便如果有人克隆回購文件,該文件也存在,但不能用簡單add & commit

回答

1

簡短的答案是否定的。 .gitignore設施只能防止首先跟蹤文件。換句話說,它可以防止文件第一次進入存儲庫。但是,一旦跟蹤了文件,它就會被永久跟蹤。該文件的所有更改都將被跟蹤。

有兩種通用的解決方案。 (1)避免將該文件添加到索引。這只是一個政策問題。 (2)將所有這些被忽略的文件放在一個檔案中,如UnzipMeRightAfterCloning.zip。這是人們進入回購協議的額外步驟,但至少目標文件不會被提交。

-1

嘗試添加文件/文件夾的.gitignore

+0

我已經將文件添加到.gitignore,但它仍然出現在'git status'文件列表中,當我編輯它。 – automatix

+0

我不知道爲什麼發生這種情況。在我的情況下,我有幾個文件添加到.gitignore,當我做一個新的提交,這些文件不會顯示在藏匿處。你在修改.gitignore文件後做了提交嗎?也許這是原因 – Josue

+0

在我的情況下,文件已經被版本化。 '.gitignore'僅適用於尚未添加到/已從版本中刪除的文件/文件夾。 – automatix

0

文件已經下GIT中你可以忽略使用

git update-index --assume-unchanged filename 

和unigtore 的git更新指數--no-假設未發生變化的文件名

但是,也有一些有趣的功能,git - ignoring commited files and switch branch

+1

重要的是要注意,在每個「add」之後並且在「commit」之前,您必須執行該命令。 – tubaguy50035

+0

這可行,但對任何涉及使用'git add --all'的工作流程來說都是非常不友好的。 – TheBuzzSaw

相關問題