如何配置git在本地忽略某些文件?

余生长醉 提交于 2019-12-10 17:12:24

我可以在本地忽略文件而不污染其他所有人的全局git配置吗? 我有处于git状态的垃圾邮件的未跟踪文件,但我不想为我在本地分支机构中拥有的每个单个随机未跟踪文件提交git config更改。


#1楼

更新 :考虑使用git update-index --skip-worktree [<file>...]代替,谢谢@danShumway! 请参阅Borealid关于这两种选择的区别的说明


旧答案:

如果您需要忽略对跟踪文件的本地更改(我们对配置文件进行了本地修改),请使用git update-index --assume-unchanged [<file>...]


#2楼

相关的Git文档中

特定于特定存储库但不需要与其他相关存储库共享的模式(例如,位于存储库内但特定于一个用户工作流程的辅助文件)应放入$GIT_DIR/info/exclude文件。

.git/info/exclude文件与任何.gitignore文件具有相同的格式。 另一个选项是将core.excludesFile设置为包含全局模式的文件的名称。

请注意,如果您已经取消暂存更改,则必须在编辑忽略模式之后运行以下命令:

git update-index --assume-unchanged [<file>...]

注意在$GIT_DIR :这是一个符号使用遍布 git的手册只是为了表明路径git仓库。 如果设置了环境变量,那么它将覆盖您所在的任何存储库的位置,而这可能不是您想要的。


#3楼

您有几种选择:

  • 在工作目录中保留一个肮脏的(或未提交的) .gitignore文件(或使用topgit或其他一些此类补丁工具自动应用该文件)。
  • 如果$GIT_DIR/info/exclude特定于一棵树,则将$GIT_DIR/info/exclude放入$GIT_DIR/info/exclude文件中。
  • 运行git config --global core.excludesfile ~/.gitignore并将模式添加到~/.gitignore 。 如果要忽略所有树中的某些模式,则此选项适用。 例如,我将其用于.pyc.pyo文件。

另外,请确保您使用的是模式,而不是显式枚举文件(如果适用)。


#4楼

将以下行添加到.gitconfig文件的[alias]部分

ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"

现在,您可以使用git ignore my_file忽略对本地文件的更改,而git unignore my_file可以停止忽略更改。 git ignored列出了忽略的文件。

该答案来自http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html


#5楼

我认为您正在寻找:

git update-index --skip-worktree FILENAME

忽略本地更改

这是http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/有关这些解决方案的更多说明!

撤消使用:

git update-index --no-skip-worktree FILENAME
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!