是否可以仅为同步而忽略GitHub文件?

是否可以仅为同步而忽略GitHub文件?,git,github,Git,Github,我对GitHub还很陌生,但我现在使用它来跟踪小型web开发项目的本地版本已经有一段时间了。假设我有一个项目,其中包含一组HTML、CSS和JS文件,但也包含一个PHP文件,用于访问MySQL数据库。PHP文件包含我的MySQL凭证,包括密码,所以我显然不想公开这个文件。我想在本地跟踪对项目的所有更改,包括PHP文件,但如果我想将项目联机,我需要某种方法将此文件从同步中排除 所以我的问题是:我是否可以在本地repo中跟踪与GitHub帐户同步的文件时忽略该文件?如果我完全走错了方向,我会很高兴听

我对GitHub还很陌生,但我现在使用它来跟踪小型web开发项目的本地版本已经有一段时间了。假设我有一个项目,其中包含一组HTML、CSS和JS文件,但也包含一个PHP文件,用于访问MySQL数据库。PHP文件包含我的MySQL凭证,包括密码,所以我显然不想公开这个文件。我想在本地跟踪对项目的所有更改,包括PHP文件,但如果我想将项目联机,我需要某种方法将此文件从同步中排除


所以我的问题是:我是否可以在本地repo中跟踪与GitHub帐户同步的文件时忽略该文件?如果我完全走错了方向,我会很高兴听到关于这个问题的更可靠的解决方案。谢谢

您可以忽略在git存储库中跟踪的文件。这在类似的情况下很常见

在项目的根目录中有一个名为.gitignore的文件。在这个文件中,您将不希望跟踪的文件的路径放在git存储库中

请查看有关如何使用的完整说明:


在您的情况下,您必须手动将此“数据库配置”文件发送到您的服务器。

不,这是不可能的,但我确实认为您做得不正确。在PHP文件中存储凭据是一种不好的做法。您应该有一个带有设置的不同文件,但同样,根据您将该设置文件放在何处以及在存储库中有存根设置文件的重要性,您可能会回到相同的问题,但在不同的文件中。

在忽略部分内容的同时,不可能推送提交。这样做将导致SHA1标识符更改,从而导致不同的提交

您可以在一个分支上进行公共开发,然后将这些更改合并到另一个分支中,在该分支中跟踪需要保持私有的配置信息。由于您可以在执行未提交的更改时切换分支,因此您甚至可以在签出私有分支的情况下执行大多数开发和测试,只需切换到公共分支进行提交,然后切换回并在中合并这些更改


但是,当你只推动你的公共部门而不是私人部门时,你需要小心。一般来说,最好将您不想推送的信息保存在一个单独的小文件中,这样就可以安全地忽略整个跟踪过程。

有很多方法可以省略部分文件,但对于刚开始使用git的人来说,这些方法太复杂了。大多数技巧都是围绕所谓的过滤器(filter)而发展的,这些过滤器是在生产站点上签出时解析和创建文件的命令。但你不需要这些

最简单的诀窍是让应用程序更安全、更可移植

它更安全,因为所有机密数据都保存在一个文件中,可以获得非常严格的权限(因此,有权访问代码库(如FTP)的人无法查看凭据)。 它具有更好的可移植性,因为它允许您的团队在他们自己的开发机器上以他们想要的方式运行他们自己的凭据。e、 g.使用XAMP的人可能与使用虚拟机或homebrewn脚本管理其项目的人有不同的数据库名称

在服务器上,创建一个文件
/path/only/www data/has/read access/secret.inc

<?php
/** Hashing **/
define("SECRET_HASH", "hogwards");

/** Database **/
define("DB_USER", "harry");
define("DB_PASS", "alora");
?>
您还可以在示例
secret.inc
中签入新协作者,
secret.inc.example
,该示例具有定义,但值为空字符串


现在,您只需将
settings.php
与所有其他提交一起推送即可。而且它会在制作中找到“秘密公司”;使用Production服务器登录详细信息,例如您的数据库。

我认为这是不可能的。您可以使用.gitignore,但这不会提交本地repo中的更改。我确实希望跟踪本地repo中的所有文件,只是不想将它们全部同步。所以.gitignore在这里没有帮助。是的,我认为在PHP文件中使用DB凭据的示例将是一个糟糕的实践示例。。感谢您提供了详细的替代选项,以及对git过滤器的提示。我一定会调查的。
<?php
require("/path/only/www-data/has/read-access/secret.inc");
// Or slightly more portable
// require("../etc/secret.inc");
?>