我想提交并推送两个新文件,这些文件位于项目的.gitignore中列出的文件夹中。我想我可以只更改.gitignore文件,但后来我需要两次提交:一次提交推送两个新文件,另一次提交重置.gitignore。如果可能的话,我想在一次提交中这样做。
有没有办法提交&推送一个被忽略的特定文件?
答案 0 :(得分:20)
您不必修改.gitignore:
您可以强制添加这些文件:
git add --force -- file1 file2
git commit -m "add previously ignored files"
git push
-f
--force
允许添加其他被忽略的文件。
作为Jakub Narębski条评论,这些文件不再被忽略,即使它们仍会被.gitignore
指令选中。
只是想知道在使用--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")
中详述的那样Atm git没有提供一种机制来忽略每个克隆上对已提交文件的所有更改。
所以:
git rm --cache
将删除该文件(同时保留其以前的历史记录):file1或file2将不再可见,并且将被忽略。 git update-index --assume-unchanged -- file1 file2
不删除文件,但不再检测本地修改。答案 1 :(得分:2)
git add -f /path/to/file
即使文件位于被忽略的目录中,也会强制添加文件