几天前,我注意到不知何故有一个提交的文件在 .gitignore 中也被忽略了。这是网站的主要配置文件,我的开发副本不知何故被提交了。
为了删除该文件,我创建了一个提交,从 .gitignore 中删除了该行并删除了有问题的文件。然后我创建了另一个提交,重新添加了 .gitignore 行。
但是现在,只要将这些提交应用于某人的环境,他们忽略的配置文件就会被删除!我怎样才能修复我的回购,这样就不会再发生这种情况了?
你真的不能。如果您当前的 HEAD 提交跟踪该文件并因此包含该文件,而后续提交没有,Git 将通过删除该文件来应用此差异,因为这就是历史记录中发生的事情。如果你想保存文件,你可以在签出新版本之前临时重命名它以防止 Git 删除它,或者你可以使用git checkout oldcommit -- config.file
.
该.gitignore
文件的作用不是防止在您的存储库中添加或删除任何内容。它只会影响 Git 检测未跟踪文件的机制,例如通过从git status
. 但是,它不会阻止您从存储库中显式添加或删除文件。
话虽如此,您不必删除该行.gitignore
即可从存储库中删除文件。您本来可以git rm --cached config.file
取消跟踪它;无需物理删除文件,也无需触摸 gitignore。