我有一个非常奇怪的问题,我希望知道你对此的建议。
有时,当我将更改推送到REMOTE服务器时,不会显示更改。
我做ssh到远程机器,我做了git status
,我看到了:
已修改:app / runtime / application.log
问题是,所有目录,现在还有特定文件,都是.gitignore的目标。
/nbproject/
/app/runtime/
/public_html/assets/
/app/runtime/application.log*
/app/runtime/error.log*
没有ftp直接完成,只使用推拉。
也许它们是在实际网站上写入app/runtime/application.log
的内容,因此application.log
与存储库中的内容不同,当发生这种情况时 git拒绝提取 ,因为它会将application.log
覆盖为旧版本。
这可能发生在同一目录上的许多其他文件中。应用程序运行的那一刻,可以由实时站点创建的文件。
我的问题是,我们怎样才能避免这种情况? 为什么.gitignore似乎在这里没有效果?
ps - 如果我需要提供更多详细信息,例如服务器挂钩或其他什么,请告诉我。
答案 0 :(得分:7)
在应用app/runtime/application.log
规则之前,您已将.gitignore
添加到git 。 gitignore
不会影响git对现有文件的认知,只会影响新创建的文件。
git rm --cached app/runtime/*
应该从git的索引中删除日志。
答案 1 :(得分:2)
来自man gitignore
:
gitignore文件指定git应忽略的故意未跟踪文件。 git已经跟踪的文件不受影响。
因此,如果您的application.log
文件已添加到存储库,则gitignore
将不执行任何操作。
解决方案是从存储库中删除这些文件。你真的需要同步日志文件吗?
git rm --cached app/runtime/application.log
等等。