Git - 在 .gitignore 中提交文件

Git - Commit file in .gitignore

我想提交并推送项目的 .gitignore 中列出的文件夹内的两个新文件。我想我可以只更改 .gitignore 文件,但随后我需要两次提交:一次提交推送两个新文件,第二次提交重置 .gitignore。如果可能的话,我想在一次提交中完成。

有什么方法可以提交并推送被忽略的特定文件吗?

您不必修改 .gitignore: 您可以强制添加这些文件:

git add --force -- file1 file2
git commit -m "add previously ignored files"
git push

来自 git add man page:

-f
--force

Allow adding otherwise ignored files.

Jakub Narębski 评论,那些文件不再被忽略,即使它们仍然会被 .gitignore 指令选中。


Tom Hart asks :

Just wondering if there's anyway to re-ignore the files after using --force?

您需要从索引中记录它们的删除,以便在工作树中再次忽略这些文件:

git rm --cached file1 file2
git commit -m "Remove files which should be ignored"
git push

一旦文件从索引中删除(在提交和推送步骤之前),.gitignore 规则就会生效。
推送意味着其他贡献者将受到操作的影响。

如果您只想在本地暂时忽略那些文件,请使用:

git update-index --assume-unchanged -- file1 file2

(正如我今天早些时候在“”中详述的那样)

作为Zeeker adds :

Atm git doesn't provide a mechanism to ignore all changes to a committed file across each clone.

所以:

  • git rm --cache 将删除该文件(同时保留其以前的历史记录):file1 或 file2 将不再可见,并将被忽略。
  • git update-index --assume-unchanged -- file1 file2 不会 删除文件,但不再检测 local 修改。
git add -f /path/to/file

将强制添加文件,即使它在被忽略的目录中也是如此