假设这个基本项目:混帐消除在跟踪目录服务器生成的文件
├── 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仓库中完成一些配置。我认为没有可用的解决方案? –