Git - .gitignore中的提交文件

时间:2015-02-16 14:26:51

标签: git gitignore git-commit

我想提交并推送两个新文件,这些文件位于项目的.gitignore中列出的文件夹中。我想我可以只更改.gitignore文件,但后来我需要两次提交:一次提交推送两个新文件,另一次提交重置.gitignore。如果可能的话,我想在一次提交中这样做。

有没有办法提交&推送一个被忽略的特定文件?

2 个答案:

答案 0 :(得分:20)

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

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

来自git add man page

-f
--force
  

允许添加其他被忽略的文件。

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


Tom Hartin the comments

  

只是想知道在使用--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

(正如我今天早些时候在" GIT Ignore already committed files using exclude for local changes")

中详述的那样

由于Zeeker添加in the comments

  

Atm git没有提供一种机制来忽略每个克隆上对已提交文件的所有更改。

所以:

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

答案 1 :(得分:2)

git add -f /path/to/file
即使文件位于被忽略的目录中,

也会强制添加文件