Git:忽略版本控制的文件

Raf*_*fid 46 git gitignore

.gitignore文件在忽略我们不想控制的一些文件时非常有用.不幸的是,当文件已经受版本控制时,它无法使用.例如,我的.gitignore(已经添加到git)文件可能与我的同事想要的文件不同(例如,我想忽略Vim文件).每当我对此文件进行更改时,git都会将其显示为已修改的文件.所以我的问题:

  1. 有没有办法忽略某个文件的更改,这个文件已经由Git控制了?!
  2. 有没有办法提交这些更改,但只为自己保留?显然,我不想使用分支,因为我正在某个分支上工作.

Ari*_*zis 118

使用git-update-index暂时忽略对已受版本控制的文件的更改:

git update-index --assume-unchanged <files>
Run Code Online (Sandbox Code Playgroud)

要撤消该用途:

git update-index --no-assume-unchanged <files>
Run Code Online (Sandbox Code Playgroud)

如果你需要通过git-reset来保持更新skip-worktree,请no-skip-worktree查看update-index 的和选项


Gre*_*ill 13

如果要排除特定于进程的文件(例如Vim临时文件),请编辑(本地)文件.git/info/exclude并在其中添加排除模式.此文件专为特定于开发人员的排除项而非.gitignore,专为项目范围的排除项而设计.

简短的总结是,每个人都应该就增加的内容达成一致.gitignore.对于您不同意的文件,请使用.git/info/exclude.

  • 我将版本控制文件添加到 .get/info/exclude 但它们继续显示为修改后的文件。 (2认同)
  • 最初的问题是寻找一种让不同的同事忽略不同的文件集的方法。我的答案介绍了为此目的设计的`.git / info / exclude`文件。但是,如果将问题概括为“如何忽略已经添加到Git的* any *文件的更改”,那么可以,您需要不同的解决方案,因为这是一个不同的问题。但是,我不建议针对此特定问题的一般解决方案,因为同事无法再共享对.gitignore的更改。 (2认同)

小智 5

你可以使用这个命令来得到你想要的.

git rm --cached path/to/file
Run Code Online (Sandbox Code Playgroud)

要么

git rm -r --cached path/ignore/dir
Run Code Online (Sandbox Code Playgroud)

这只会从git中删除轨道,不会删除真实文件.

然后,您可以编辑忽略文件以取消跟踪这些文件或目录.