1

我有一个非常奇怪的问题,我想知道你对此的建议。

有时,当我将更改推送到远程服务器时,更改不会出现。我对远程机器执行 ssh 操作,执行 a git status,然后我看到:

修改:app/runtime/application.log

问题是,所有目录,现在还有那里的特定文件,都是 .gitignore 的目标。

/nbproject/
/app/runtime/
/public_html/assets/
/app/runtime/application.log*
/app/runtime/error.log*

没有直接进行ftp,只使用了push和pull。

app/runtime/application.log也许它们是在实时站点上写入的东西,因此application.log与存储库中的不同,当这种情况发生时git 拒绝 pull,因为它会覆盖application.log到旧版本。

这可能发生在同一目录中的许多其他文件上。应用程序运行时可以由实时站点创建的文件。

我的问题是,我们怎样才能避免这种情况?为什么 .gitignore 在这里似乎无效?

ps - 如果我需要提供更多详细信息,例如服务器挂钩或其他内容,请告诉我。

4

2 回答 2

8

听起来您在应用规则之前app/runtime/application.log已添加到 git 。不会影响 git 对现有文件的感知,只会影响新创建的文件。.gitignoregitignore

git rm --cached app/runtime/*应该从 git 的索引中删除日志。

于 2012-05-27T10:27:54.067 回答
2

来自man gitignore

gitignore 文件指定了 git 应该忽略的故意未跟踪的文件。已经被 git 跟踪的文件不受影响

因此,如果您的application.log文件被添加到存储库中,那么gitignore将什么也不做。

解决方案是从存储库中删除这些文件。你真的需要同步日志文件吗?

git rm --cached app/runtime/application.log

等等。

于 2012-05-27T10:28:01.883 回答