如何配置git以忽略本地的一些文件?

如何配置git以忽略本地的一些文件?,git,ignore,gitignore,Git,Ignore,Gitignore,我可以忽略本地文件而不污染其他所有人的全局git配置吗?我有一些未跟踪的文件,它们在我的git状态下是垃圾邮件,但我不想为我在本地分支中的每个随机未跟踪文件提交git配置更改。来自: 特定于特定存储库但不需要与其他相关存储库共享的模式(例如,存储库中的辅助文件,但特定于一个用户的工作流)应进入$GIT_DIR/info/exclude文件 .git/info/exclude文件的格式与任何.gitignore文件的格式相同。另一个选项是将core.excludesFile设置为包含全局模式的文件

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

来自:

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

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

注意,如果您已经有未老化的更改,则在编辑忽略模式后必须运行以下操作:

git update-index --assume-unchanged <file-list>
通过以下方式将其逆转:

git update-index --no-skip-worktree <file-list>
git更新索引--不跳过工作树

您有几个选项:

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

此外,请确保您使用的是模式,而不是显式枚举文件,适用时。

更新:考虑使用<代码> Git更新索引——跳过WorkToe[[…]代码>,谢谢,丹莎威!看


旧答案:


如果您需要忽略对跟踪文件的本地更改(我们对配置文件进行了本地修改),请使用
git update index——假设未更改[…]

将以下行添加到.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
列出被忽略的文件


这个答案来自。

我想您正在寻找:

git update-index --skip-worktree FILENAME
忽略本地所做的更改

下面是关于这些解决方案的更多解释

要撤消,请使用:

git update-index --no-skip-worktree FILENAME

如果您的repo还没有.gitignore文件,那么一个简单的解决方案是创建一个.gitignore文件,并在其中将
.gitignore
添加到要忽略的文件列表中。

您可以安装一些来简化此过程。这将编辑
.gitconfig
文件的
[alias]
节点

git config--global alias.ignore'update index--skip worktree'
git config--global alias.unignore'更新索引--不跳过工作树'
git config--全局别名.已忽略'!git ls文件-v | grep“^S”
为您安装的快捷方式如下所示:

  • git ignore config.xml
    • git将假装在
      config.xml
      上看不到任何更改,以防止您意外提交这些更改
  • git unignore config.xml
    • git将继续确认您对
      config.xml
      所做的更改,从而允许您再次提交这些更改
  • git被忽略
    • git将以上述方式列出您“忽略”的所有文件

我通过引用-表示一个
-假设相同的
版本来构建它们

我提供的版本使用
--skip worktree
忽略本地更改。有关差异的完整解释,请参见,但本质上是
--跳过工作树
,其目的是让开发人员更改文件而不必承担提交更改的风险


此处显示的
git-ignored
命令使用
git-ls-files-v
,并过滤列表以仅显示以
S
标记开头的条目。
S
标记表示状态为“跳过工作树”的文件。有关
git ls files
显示的文件状态的完整列表:请参阅上的
-t
选项的文档。

您只需将.gitignore文件添加到主目录,即
$home/.gitignore
~/.gitignore
。然后告诉git在命令中使用该文件:

git config --global core.excludesfile ~/.gitignore
这是一个正常的.gitignore文件,git在决定忽略什么时会引用它。因为它位于您的主目录中,所以它只适用于您,不会污染任何project.gitignore文件


多年来我一直在使用这种方法,并取得了很好的效果。

为了忽略未跟踪的文件,特别是如果它们位于(少数)未跟踪的文件夹中,一个简单的解决方案是在每个未跟踪的文件夹中添加一个
.gitignore
文件,并在包含
*
的单行中输入,然后输入一个新行。如果未跟踪的文件位于几个文件夹中,那么这是一个非常简单明了的解决方案。对我来说,所有文件都来自一个未跟踪的文件夹
供应商
,而上述方法刚刚起作用。

假设未更改和跳过工作树都不是本地忽略文件的正确方法。。。请检查git更新索引中的注释。由于任何原因不断频繁更改(和/或从克隆更改为另一个)且其更改不应提交的文件,则首先不应跟踪这些文件

但是,有两种方法可以在本地忽略文件(这两种方法都适用于未跟踪的文件)。将文件名放入.git/info/exclude文件中,该文件是.gitignore的本地替代文件,但特定于当前克隆。或者使用global.gitignore(仅在
git config --global core.excludesfile ~/.gitignore
alias git-ignore='echo $1 >> ##FILE-NAME##'
alias git-show-ignored='cat ##FILE-NAME##'
git-unignore(){
  GITFILETOUNIGNORE=${1//\//\\\/}
  sed -i "/$GITFILETOUNIGNORE/d" ##FILE-NAME##
  unset GITFILETOUNIGNORE
}
alias git-ignore='echo $1 >> ##FILE-NAME##'
alias git-show-ignored='cat ##FILE-NAME##'
git-unignore(){
  GITFILETOUNIGNORE=${1//\//\\\/}
  sed -i.bak "/$GITFILETOUNIGNORE/d" ##FILE-NAME##
  rm ##FILE-NAME##.bak
  unset GITFILETOUNIGNORE
}
 echo YOURFILE_OR_DIRECTOY >> .git/info/exclude