【问题标题】:Git - Commit file in .gitignoreGit - 在 .gitignore 中提交文件
【发布时间】:2015-04-17 02:12:27
【问题描述】:

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

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

【问题讨论】:

  • 你不能提交.gitignore,所以它永远不会被推送:)

标签: git gitignore git-commit


【解决方案1】:

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

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

来自git add man page

-f
--force

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

作为Jakub Narębski cmets,这些文件不再被忽略,即使它们仍会被.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不会删除文件,但不再检测本地修改。

【讨论】:

  • 请注意,跟踪的文件不再被忽略。
  • @JakubNarębski 是的。我已将您的评论包含在答案中以提高知名度。
  • 只是想知道在使用--force 后是否有办法重新忽略文件?
  • 谢谢,虽然我个人目前不需要这样做,但我可以想到一些用例,我只需要提交一个文件,然后再忽略它。感谢您的快速更新:)
  • @TomHart 请注意,update-index --assume-unchanged 完全是本地的。 Atm git 没有提供一种机制来忽略每个克隆对已提交文件的所有更改。
【解决方案2】:
git add -f /path/to/file

即使文件在被忽略的目录中也会强制添加文件

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 2015-01-06
    • 2020-01-09
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多