0

几天前,我注意到不知何故有一个提交的文件在 .gitignore 中也被忽略了。这是网站的主要配置文件,我的开发副本不知何故被提交了。

为了删除该文件,我创建了一个提交,从 .gitignore 中删除了该行并删除了有问题的文件。然后我创建了另一个提交,重新添加了 .gitignore 行。

但是现在,只要将这些提交应用于某人的环境,他们忽略的配置文件就会被删除!我怎样才能修复我的回购,这样就不会再发生这种情况了?

4

1 回答 1

0

你真的不能。如果您当前的 HEAD 提交跟踪该文件并因此包含该文件,而后续提交没有,Git 将通过删除该文件来应用此差异,因为这就是历史记录中发生的事情。如果你想保存文件,你可以在签出新版本之前临时重命名它以防止 Git 删除它,或者你可以使用git checkout oldcommit -- config.file.

.gitignore文件的作用不是防止在您的存储库中添加或删除任何内容。它只会影响 Git 检测未跟踪文件的机制,例如通过从git status. 但是,它不会阻止您从存储库中显式添加或删除文件。

话虽如此,您不必删除该行.gitignore即可从存储库中删除文件。您本来可以git rm --cached config.file取消跟踪它;无需物理删除文件,也无需触摸 gitignore。

于 2013-01-27T16:15:25.333 回答