我有我的網站/ cms在git中跟蹤和它工作得很好,除了我的.htaccess文件。該文件需要根據我在哪個服務器上運行代碼(本地/測試/實時)而大不相同。因此,現在我已經完全保留了.htaccess的完整版(它位於我的.gitignore文件中)。但偶爾它會丟失,無論如何它都是網站的一部分,我希望它能夠保持跟蹤,但我不希望它被推送到遠程存儲庫,因爲它可能會覆蓋其他服務器的正確配置。有什麼辦法讓git保持一個文件的跟蹤,但只有本地? (或任何其他方式來解決這個問題?)git版本控制文件在存儲庫沒有推/拉
回答
你可以用Git的sparse checkout功能來做到這一點。在你想有一個特殊的,未追蹤.htaccess
文件回購運行以下命令:
git config core.sparsecheckout true
echo '*' >.git/info/sparse-checkout
echo '!.htaccess' >>.git/info/sparse-checkout
git read-tree --reset -u HEAD
這將首先刪除現有.htaccess
文件。但是現在它從Git的角度來看就被忽略了,所以你可以在那裏放置一臺特定的機器,Git不會爲此煩惱。
然後,您可以添加和管理.htaccess
文件從一些其他存儲庫(說你的本地之一)。 Git很樂意跟蹤這個文件並將其保存在存儲庫中,但在具有上述稀疏結帳配置的計算機上,Git將忽略該工作目錄中的本地.htaccess
文件,即使它與存儲庫中的文件不同。
保持你的.htaccess
在一個完全獨立的Git倉庫,並在你的代碼是在目錄符號鏈接它(並保持它.gitignore
倒是在原來的倉庫。)
您可能有多個分支,每個服務器一個分支,以便每個分支都有自己版本的服務器特定配置文件。然後,當您在主分支中進行更改時,其他分支將與其合併並獲取最新更改 - 但他們會保留自己的配置。如果配置文件發生了變化,那麼就需要手動合併,否則這可以通過腳本甚至githooks來實現。
聽起來像.htaccess文件的內容是特定於部署的,因此不是代碼的一部分。換句話說,這些文件可以由部署腳本生成以適應每個服務器,而不是保存在git中,然後每次提交時都必須覆蓋更改。
如果這是一個安全問題,答案將是「否」,因爲如果git跟蹤文件的歷史記錄,克隆該存儲庫的每個人都將獲得完整的歷史記錄。但是,如果您可以控制所有位置,只需要一種方式來跟蹤它,但是在其他位置以避免檢查它,也許git smudge和git clean filters可能會爲您做些事情。它們允許您在檢出並提交時編輯文件的內容。我不確定這是否合適,但我試圖想出一個可行的解決方案。
或者,使用替代名稱(即不是「.htaccess」)跟蹤文件,並且在適用的情況下,只有在適用的情況下,創建名爲.htaccess的符號鏈接才能跟蹤名稱。
- 1. 文件沒有在版本控制中出現:Unity + Git
- 2. Git版本分別控制版本庫中的文件
- 3. Git版本控制 - 存儲庫上的視圖?
- 4. Git拉,但從來沒有推文件
- 5. 如何將Git存儲庫的版本與另一個版本的Git存儲庫鏈接Git存儲庫
- 6. 進度條沒有水銀版本控制顯示推或拉
- 7. 如何從版本控制中除去文件/文件夾,但將其保存在Git的存儲庫中?
- 8. SVN SVN版本控制文件在哪裏存儲在本地?
- 9. 保存舊的git存儲庫版本
- 10. 修復損壞的git存儲庫。沒有默認版本'HEAD'
- 11. 在版本控制中存儲SQLite數據庫有意義嗎?
- 12. git:忽略*版本控制的文件
- 13. Git:忽略版本控制文件
- 14. git推錯版本庫
- 15. 從遠程服務器複製沒有修訂版本(沒有.git和.gitingore)的git存儲庫
- 16. git存儲庫的過濾版本
- 17. Git中的私有存儲庫 - 沒有推送到Master分支
- 18. 阿拉伯文本沒有儲存在mysql數據庫中?
- 19. 使用egit從中央git存儲庫推入/拉出後沒有樹衝突
- 20. Bazaar版本控制 - 可能有多個存儲庫/子模塊?
- 21. 拉所有的git存儲庫分支
- 22. 在git倉庫中有效存儲二進制文件
- 23. 有沒有人制作過內存中的GIT存儲庫?
- 24. Git在推送到存儲庫之前統計文件
- 25. 在Git中推送存儲庫的子文件夾?
- 26. 在新的存儲庫中推送新文件Git
- 27. 如何在git存儲庫中獲取舊版本文件的副本?
- 28. 推送到沒有SSH密鑰的git存儲庫?
- 29. 下載最新版本的特定GIT分支+沒有本地存儲庫
- 30. git拉不拉存儲庫的名稱?
但是,這並不會讓Git跟蹤文件,這是OP所需的一部分。 – Amber 2011-01-09 07:25:56