一旦文件已在 Git 中被跟踪,是否可以忽略该文件?

Is it possible to ignore a file once it is already tracked in Git?

是否可以添加一次虚拟配置文件(以便其他开发人员可以看到配置文件的外观),然后使用 .gitignore 文件忽略它。然后用有效的配置细节替换虚拟配置细节,这样我就可以继续开发项目并继续提交更改?但原始虚拟配置文件将在 Github?

上保持不变

这是我尝试过的方法:

但是跟踪到 configuration.java 的更改,所以这不起作用。

如果您只是担心忽略本地开发存储库中的更改,您可以使用 git update-index --assume-unchanged <file> 忽略对文件的任何更改。有关详细信息,请参阅 http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/

你提到:

  1. 使用 Configuration.java 将本地 repo 推送到 github(包含虚拟 详情)
  2. 将Configuration.java添加到.git忽略文件

问题在于,gitignore 仅适用于尚未被跟踪的文件,并且由于您已提交它,gitignore 无法正常工作为时已晚。引用 gitignore 文档:

A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected;

如果您想将自己的工作提交到公开可见的存储库,但又想隐藏敏感信息(例如连接字符串/密码等),请先提交一个虚拟文件。例如,提交如下内容:

public class Configuration {
    public static final String USERNAME = "someUsername";
    public static final String PASSWORD = "passwordHere";
}

然后,告诉 git 停止跟踪该文件的更改,这样您就可以在本地修改值,但系统不会提示您提交这些更改。

git update-index --assume-unchanged path/to/file.txt

有几点需要指出:

  • 始终签入虚拟配置文件,不要将其完全遗漏。如果 你这样做,当人们检查你的项目并且文件丢失时, 他们将无法编译该项目!通过给一些帮助他们 示例数据。
  • 因为 git 不再跟踪该文件,如果您进行任何修改 你确实想提交,你必须手动满足 (通过 github.com 或重新打开跟踪,修复它,然后 再次禁用跟踪)。为此,保持该文件相对轻便,只有变量,不要在其中放置您可能需要不断更新的逻辑。