2010-06-03 217 views
27

我的.gitignore文件被忽略,應該忽略的文件仍然可見。.gitignore不會忽略文件

[email protected] ~/workdir % git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: .htaccess 
#  modified: application/controllers/statistics.php 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
[email protected] ~/workdir % cat .gitignore 
.htaccess 
application/config/config.php 
application/config/database.php 
[email protected] ~/workdir % 

這些文件在版本控制中,但我不想推動明智的更改。 git rm ...不是一個選項,因爲這些文件應該在版本控制1(與文件中的其他設置)。我只是不想推動我對這些文件的更改。

+0

刪除您回購的東西,也許這篇文章可以幫助你http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring試試吧! – 2013-05-10 04:59:19

回答

7

在git中忽略文件並不意味着你不會他們。這意味着你不會版本控制他們。如果你不想推,那麼我建議你創建一個本地分支,它將包含本地機器的東西,然後將必要的更改合併到你將推送到遠程的分支。

我想你已經add編輯你的文件,現在試圖忽略它們。

+2

我現在使用的另一種方式是存儲本地更改並在合併/重新綁定後彈出存儲。 – Fu86 2010-06-04 23:47:12

+0

我在忽略列表上有這個文件,並以某種方式「添加」 - 它。好的電話@Naufal – 2011-11-02 19:21:52

+1

沒有真正回答這個問題,但@ anybug的答案。 – MikeSchinkel 2014-02-02 19:07:57

2

這一個竊聽我好幾天。 .htaccess文件已經在版本控制下並且已被修改。

4

看來.htaccess文件已被添加到版本控制。您需要先將其刪除,然後才能被忽略。這可以使用git rm

+0

我知道,但我不想刪除該文件。我只想忽略更改 – Fu86 2010-06-03 10:38:38

+0

如果在版本控制中存在.htaccess版本,但您不想提交任何更改,.gitignore將不起作用。就我所知,這沒有選擇。只是不要將該文件添加到提交。 – Marc 2010-06-03 10:42:41

+4

你可以使用git rm --cached將文件保留在目錄中,但將其從索引中刪除 – 2010-06-03 11:11:01

13

既然你想:

  • 保持.htaccess在GIT回購(無git rm
  • 本地敏感數據在它

使用filter driver這將:

  • d uring結賬階段,完成.htaccess私人數據
  • 在提交階段從所有的敏感數據清理.htaccess

content filter driver

然後你可以版本加密的文件,你的污跡腳本:

  • 被解密,以完成經典
  • 使用的唯一一個(推/拉).htaccess文件。

您可以在不會推送的特殊分支中加密敏感數據。
即使您以某種方式推送該文件,損壞也會受到限制,因爲只有您的工作站具有解密所述文件所需的專用密鑰。

+0

爲漂亮的圖片和過濾器驅動程序+1。我想知道你什麼時候會想到這是一個版本控制問題。 :) – 2010-06-03 10:59:11

+0

+1用於自動化。我會建議'git update-index --assume-unchanged',它可能仍然是一個簡單的解決方案,但是這種自動化非常棒。 – 2010-06-03 12:12:16

+0

+1因爲純粹的事實,任何人都知道如何使用這些神祕的git東西。這不是我想要的,但仍然是! – PapaFreud 2011-04-21 07:29:57

45

我有同樣的問題:我想每個存儲庫不同的.htaccess文件,然後我不能,因爲htaccess文件已被添加到存儲庫。它現在正在工作,我可以從任何版本更改任何.htaccess文件,而不會讓git推送它們。Marc說得對:「你需要先刪除它,然後才能被忽略,這可以使用git rm來完成」。

我繼續在這個順序:

  • 備份您的.htaccess地方
  • 文件使用Git RM的.htaccess
  • 提交此變更(刪除的.htaccess)
  • 推它刪除.htaccess文件(git push)

這會明顯的移除你的.htaccess文件

  • 然後編輯的.gitignore並添加/.htaccess
  • 提交,然後將其推
  • 通過恢復以前的備份

,那麼你就大功告成了重新.htaccess文件:無論你更改進入.htaccess不會再被推送。困難的部分是以下步驟訂購...

希望這是明確的

+3

+1分步驟子彈和超清晰說明 – 2013-01-22 05:02:35

+0

正斜槓!這讓我很生氣,我只是'.htaccess'在我的gitignore文件 – lxm7 2015-02-18 09:44:20

30

anybug's steps noted here我的git還在不停的.htaccess的軌道,這有助於:

git update-index --assume-unchanged .htaccess 

要恢復:

git update-index --no-assume-unchanged .htaccess 
+0

這很完美,謝謝! – Kristian 2012-06-27 17:51:49

+0

對我來說最好的解決方案 – 2014-04-08 14:06:57

+2

你可以通過 'git update-index --no-assume-unchanged'恢復那個效果。 – rahmanisback 2014-12-08 21:43:23

8

假設以下是.gitignore文件的內容。這裏,.htaccess位於項目的根目錄下。

/.htaccess 
application/config/config.php 
application/config/database.php 

讓我們運行下面的命令忽略.htaccessconfig.phpdatabase.php文件。

[email protected]:work-dir$ git update-index --assume-unchanged .htaccess 
[email protected]:work-dir$ git update-index --assume-unchanged application/config/config.php 
[email protected]:work-dir$ git update-index --assume-unchanged application/config/database.php 

如果你想重新開始跟蹤它:

[email protected]:work-dir$ git update-index --no-assume-unchanged path/to/file 

例如

[email protected]:work-dir$ git update-index --no-assume-unchanged .htaccess 
+0

這對我有用。我的代碼在項目的'/ code /'目錄中。 '$ git update-index --assume-unchanged code/.htaccess'。 SourceTree不再追蹤它。 – 2014-05-05 12:46:30

+0

這是唯一對我有用的東西。讓我發瘋,謝謝 – jamescampbell 2016-06-22 02:51:57

3

我一直這樣做。我開始在我的回購配置文件,然後決定我不希望他們在那裏。

您可以通過使用

git rm --cached <<filename>>