.gitignore文件在忽略一些我们不想控制的文件时非常有用。不幸的是,当文件已经受版本控制时,它不能使用。例如,我的.gitignore(已经添加到git中)文件可能与我的同事想要的文件不同(例如,我想忽略Vim文件)。每当我对这个文件进行更改时,git会将其显示为修改后的文件。所以我的问题:Git:忽略版本控制文件
- 有什么办法可以忽略某个文件的变化,它已经由Git控制?!
- 有什么办法可以提交这些更改,但只保留给我自己吗?显然,我不想使用分支,因为我正在某个分支上工作。
.gitignore文件在忽略一些我们不想控制的文件时非常有用。不幸的是,当文件已经受版本控制时,它不能使用。例如,我的.gitignore(已经添加到git中)文件可能与我的同事想要的文件不同(例如,我想忽略Vim文件)。每当我对这个文件进行更改时,git会将其显示为修改后的文件。所以我的问题:Git:忽略版本控制文件
如果要排除特定于进程的文件(如Vim临时文件),请编辑(本地)文件.git/info/exclude
并在其中添加排除模式。此文件专为特定于开发人员的排除而设计,而不是针对项目范围排除设计的.gitignore
。
简短的总结是,每个人都应该对添加到.gitignore
的内容达成一致。对于不同意的文件,请使用.git/info/exclude
。
我真的不能回答这个一般性问题(有混帐忽略跟踪的文件) - 它给我的印象是一个功能,将远远超过有用的更有害。
但是,gitignore manual page指定了几种配置排除文件模式的方法。
特别是,它提供了有关如何使用这些不同的方式明确指示:
- 模式应该是版本控制,并通过克隆分发到其他存储库(即文件,所有的开发者都希望忽略)应该进入
.gitignore
文件。
也就是说你.gitignore
文件不应该由你的同事不同 - 它如预期运行。
模式,其是针对特定的仓库,但它并不需要与其他相关资料库(例如,住在仓库里,但具体到一个用户的工作流程辅助文件)共享应该进入
$GIT_DIR/info/exclude
文件。用户想要的git在所有情况下(例如,备份或选择用户的编辑器生成临时文件)忽略模式通常进入由
core.excludesfile
用户的~/.gitconfig
指定的文件。
你有它。在您的~/.gitconfig
文件中指定一个core.excludesfile
文件路径,然后放入要排除的模式。
使用git-update-index暂时忽略更改所有已经在版本控制下的文件:
git update-index --assume-unchanged <files>
撤消使用:
git update-index --no-assume-unchanged <files>
也有看skip-worktree
和no-skip-worktree
选项更新-index如果你需要这个坚持过去一个git-reset
工作就像一个魅力!谢谢! –
我写过关于three ways of excluding files其他地方。
总结:
列表中较低的项目优先于较高的项目,并且在文件中的任何模式中的项目前面的!
颠倒先前的排除。
这种范例在Git的其他地方看到。例如,如果您使用的是子模块,则要使用的子模块的url位于存储库中的.gitmodules
文件中,但您可以覆盖该URL以在.git/config文件中使用。
它不适用于已经版本化的文件 –
这里是广义的,ubiquitos(而不是个人)根据SmartGitHG viusal接口使用Git的解决方案:
你可以使用这个命令来得到你想要的。
git rm --cached path/to/file
或
git rm -r --cached path/ignore/dir
这只会从混帐删除曲目,不会删除实际的文件。
然后,您可以编辑忽略文件以解开这些文件或目录。
没有答案回答主要问题 - 第1号,包括接受的问题。问题是关于忽略已经被控制的文件,而不是.gitignore不会排除会做这项工作 – shealtiel
git-update-index的答案是正确的答案。 – Jason