2012-02-19 78 views
4

我已經開始使用git爲我的項目,當我創建一個項目,它包含配置文件配置文件夾:在初次提交時git commit配置,但永不再次?

application/config/config.php 
application/config/database.php 
application/config/routes.php 

當我第一次提交我想這些文件(其默認值)被提交,因此它們作爲「默認」配置存在於存儲庫中,如果我克隆到存儲庫,則會獲得這些文件。當我更新它們以包含我的配置變量(針對我正在開發的版本)時,我不希望它們在存儲庫中進行更新,我希望它們保持其在存儲庫中的默認狀態。

我曾嘗試首先在其默認狀態提交它們,然後將其添加到我的.gitignore文件,像這樣:(!耶)

application/config/* 

現在,當我將我的配置文件沒有提交然而原始默認值消失,文件夾application/config /不再存在於我的存儲庫中。

我認爲我缺少明顯的東西在這裏,但我非常缺乏經驗與GIT。

如何在我的第一次提交時提交配置文件,但從未再次將保留在存儲庫中的默認狀態?

回答

7

你可以,一旦版本,更新自己的指數:

git update-index --assume-unchanged application/config/config.php 

或者你甚至可以更permently更新索引:

git update-index --skip-worktree application/config/config.php 

(如展 「git update-index --assume-unchanged and git reset」)


另一解決方案是不已經 rsion最後那些配置文件(因爲正如你所指出的內容可能會有所不同),但使用filter driver

filter driver

您的版本化將:

  • 模板文件(application/config/config.tpl
  • 配置值的文件(有一個默認,以及其他爲您不同的環境)
  • 能夠識別一個配置文件的內容(因爲it won't have its path)的腳本,並生成根據當前環境的最終配置文件。
+0

謝謝worktree命令完美工作,我會看一下第二個解決方案的東西爲我長期的git的使用。謝謝! – sam 2012-02-19 01:50:59