如何忽略已提交的文件到Git的任何更改

这个问题在这里已经有了答案:

  • 忽略已经提交给Git仓库的文件[复制] 21个答案

  • 只有未跟踪的文件(未添加到Git)可以忽略。 换句话说,忽略是关于Git未知的文件,即不在索引中(在暂存区域中没有条目)。

    为了使文件不被跟踪(从索引中删除它,从而在下一次提交中将它从删除中暂存),但将它保存在工作区域中,即在文件系统中,可以使用

    $ git rm --cached <file>
    

    该文件将在本地提交后以及推送到远程后从远程存储库中删除(从顶层提交树 - 它将保留在历史记录中)。


    如果你希望Git忽略更改,以便git diffgit status不报告它们,并且git commit -a不会提交它们(但是git add <file> + git commitgit commit <file>仍然会添加它们) ,你可以用这个技巧对Git说谎(参见git ready»暂时忽略文件文章):

    $ git update-index --assume-unchanged <file>
    

    git update-index命令是低级(管道)命令。 您可以通过以下方式找到哪些文件“ 被假定为不变 ”:

    $ git ls-files -v
    h <file>
    

    git ls-files -v使用小写字母表示状态文件被标记为假定不变。

    你可以关闭它

    $ git update-index --no-assume-unchanged <file>
    

    注意,这个选项最初的目的是在平台上加速状态,其中stat缓慢。


    遵循@Dave评论和引用的Git - '假定 - 不变'和'skip-worktree'问题之间的区别,现代Git中的另一个选项是让Git不使用具有skip-worktree位的工作区版本。

    您可以用一个跟踪文件打开它

    $ git update-index --skip-worktree <file>
    

    这使得Git使用索引版本(最后提交的版本)来代替文件系统的版本。 您可以检查哪些文件具有该位

    $ git ls-files -v
    S <file>
    

    git ls-files -v命令将使用S来表示带有“skip-worktree”集的文件。

    请注意,此选项最初的目的是支持稀疏检出。


    .gitignore只是告诉git哪些未跟踪的文件要忽略,所以如果你的文件已经被git跟踪了,它将不会执行任何操作。 相反,您可以通过使用此命令告诉git临时忽略对跟踪文件的任何更改:

    git update-index --assume-unchanged <file>
    

    如果您想解除这个问题,只需运行:

    git update-index --no-assume-unchanged <file>
    

    详情请看这里。


    解开您想要忽略的文件:

    git rm --cached <file>
    

    然后你可以添加文件, .gitignore不会跟踪被忽略的文件。

    链接地址: http://www.djcxy.com/p/23413.html

    上一篇: How to ignore any changes on already committed file to Git

    下一篇: .gitignore not working after adding it to already modified repo.