假設這個基本項目:混帳消除在跟蹤目錄服務器生成的文件
├── css
│ ├── custom.css
│ └── main.css
└── index.html
在這個目錄的根目錄下面的命令運行:
git init
git add -A :/
git commit -m "initial commit"
git push ssh://[email protected]:path/to/www master
這個部署首次提交到服務器,所以它具有相同的目錄結構。文件custom.css
適用於有權訪問服務器的人(通過ftp),以便能夠根據需要進行編輯。所以我需要這樣設置,所以無論何時進行推送,custom.css
文件都不會被本地版本覆蓋。於是我運行以下命令:
echo css/custom.css >> .gitignore
git rm --cached css/custom.css
git commit -am "removed custom.css from being tracked"
git push ssh://[email protected]:path/to/www master
然而,這只是刪除了custom.css
文件從它的位置,而不是離開它不變。我如何設置它,所以當推git不覆蓋或刪除custom.css
而無需配置任何服務器端?我希望有一個涉及配置本地git倉庫的解決方案。謝謝!
感謝您的回覆,但我無法使用涉及服務器端配置的任何解決方案。也使用涉及本地顯式存儲庫排除的解決方案,不過在遵循您的指示後,會發生什麼情況:每當我推git時,都會部署存儲在repo中的custom.css文件的版本並覆蓋服務器上的custom.css文件(I使用webhook部署到我無法控制的服務器)。當git推送發生時,我需要custom.css文件保持不變,因爲其他人正在通過服務器上的ftp進行編輯。希望這有助於澄清。謝謝 –
grunt worker,cron job,或其他什麼都不需要在服務器上發生。你可以在本地機器上配置一些東西來觀察FTP服務器的變化。最簡單的方法是不要從項目中排除文件,而是在推送提交之前設置一個本地腳本,它將FTP版本與本地'custom.css'區分開來。如果FTP版本與您的副本不同,請使腳本用服務器上的內容覆蓋您的副本,並將其與您做出的任何更改一起提交。希望這是有道理的。 – blendenzo
是的,謝謝澄清,但我希望有一個更簡單的解決方案 - 在我的本地git倉庫中完成一些配置。我認爲沒有可用的解決方案? –