Git 排除分支的文件

2023-12-09

我想忽略分支中的某些文件,而不必依赖于跟踪.gitignore在与其他分支合并期间将被覆盖的文件。

我一直密切关注堆栈溢出答案随着链接的博客文章,但我的存储库似乎无法识别指定的excludesfile in my .git/config。 Git 文档(git-config, gitignore)似乎没有显示如何指定和解决特定分支的排除文件。

My .git/config看起来像这样:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
        excludesfile = +/info/exclude

[branch "myspecialbranch"]
        excludesfile = +/info/exclude_specialbranch

My .git/info/exclude文件看起来像这样(默认情况下,我没有碰它):

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
.DS_Store

我没有.gitignore文件在我的“特殊分支”中。

如果我尝试忽略像这样的文件info.php, my .git/info/exclude_specialbranch文件看起来像这样:

info.php

...但它不会忽略该文件。

如果我跑git status --ignored,它只列出了.DS_Store文件从默认exclude file.

但是,如果我添加info.php to my .git/info/exclude file:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
.DS_Store
info.php

它完全忽略该文件。

请注意,即使没有这条线,它仍然可以工作excludesfile = +/info/exclude under [core] in .git/config。 Git 似乎知道系统范围在哪里exclude无需我去讲述。

我有一种感觉.git/config无法识别我的自定义排除文件的地址:

excludesfile = +/info/exclude_specialbranch

…很可能是因为使用+来描述该位置.git目录。

在(更新的)版本的 Git 中处理自定义排除文件的正确方法是什么?

我运行的是 OSX 10.9.5 和 Git 版本 2.2.1。


Git 不支持每个分支排除文件

你正在尝试实现 Git 不支持的目标。这博客文章是这个骗局的原始来源堆栈溢出的答案只是人云亦云。正如该答案下的评论中所指出的,即使原始博客文章也包含一个讨论,表明该解决方案不起作用,并且它链接到较新的博客文章这提到即使作者也无法重现该行为。

为什么它不起作用?如果你读过man gitignore and man git-config,你会发现只是core.excludesfile参考。不branch.<name>.excludesfile那里。这core.excludesfile旨在使您能够排除例如Vim .swp 文件或您的软件使用的其他临时内容。

core.excludesfile

此外.gitignore(每个目录)和.git/info/exclude,Git 会查找此文件以查找不应该跟踪的文件模式。 ”~/" 被扩展为以下值$HOME and "~user/" 到指定用户的主目录。其默认值为$XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME未设置或为空,$HOME/.config/git/ignore被用来代替。看.gitignore(5).

解决方法

I believe that the best approximation of a per-branch excludes file is achieved using the post-checkout hook and that rewrites the contents of .gitignore in the working tree.*

每个分支机构都会有例如A.gitignores目录,其中包含以相应分支命名的文件。那么就会有一个.gitignores/__default默认情况下使用的文件。这.gitignore将被所有排除文件排除,并由 post-checkout 挂钩创建为相应文件的副本.gitignores.

如果您不想跟踪排除文件,您可以执行相同的操作.git/info/exclude文件作为副本.git/info/excludes/__default etc.

*: Side note: I used to recommend making .gitignore a symlink updated by the hook to point to the right content, but .gitignore cannot be symlink since Git v2.32.0. Now, when editing the .gitignore, the changes are lost when switching branches, instead of being made to the branch's custom excludes file.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 排除分支的文件 的相关文章

  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 具有单独 work_tree 的 Git 子模块

    我按照本页上的教程使通过 Git 部署我的网站变得简单 http toroid org ams git website howto http toroid org ams git website howto 到目前为止一切都很好 但是我最近
  • 在 git repo 中查找超过 x MB 且 HEAD 中不存在的文件

    我有一个 Git 存储库 用于存储随机的内容 主要是随机脚本 文本文件 我设计的网站等 随着时间的推移 我删除了一些大型二进制文件 通常为 1 5MB 这些文件会增加存储库的大小 而我在修订历史记录中不需要这些文件 基本上我希望能够做到 m
  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • 运行“git apply”时出错

    当我尝试时 您能否告诉我如何解决 补丁不适用 错误 git 应用补丁 git apply 0001 my patch error patch failed test xml 114 error text xml patch does not
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • git - 更新 fork 的 master 并将我的分支重新建立到它之上?

    我分叉了一个 github 项目 然后将其克隆到本地 然后我在新分支中做了一些更改my github the project repo 然后我添加并提交了更改 并推送到我的 github 存储库并提交了拉取请求 所有者已收到我的请求 并希望
  • 如何使用交互式变基将提交编辑为未提交?

    我想使用交互式变基来编辑以前的提交 但是当我进入该提交的编辑模式时 所有文件都已提交 我知道我可以进行更改并修改提交 但我希望所有更改最初都未提交 暂存或以其他方式 这样我就可以对其进行编辑 就像在最初提交之前一样 这可能吗 Imagine
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • git reset 命令中的 ~1 是什么意思?

    git 重置 HEAD 1 我的印象是 1 的意思是 从 HEAD 开始 遵循 1 链接 并将 HEAD 标签设置为新的提交节点 我正期待着 git 重置 HEAD 2 跟随 2 个链接 然后设置 HEAD 标签 但是 如果我尝试它 我会收
  • 丢失了我在 GIT 中的提交。你会不小心删除提交吗?

    我正在使用 git gui 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • Netbeans 和 Git,.obj 文件被忽略

    我正在开发一个涉及 obj 文件的小型 git 项目 当我查看 项目选项卡 时 我发现它们被忽略了 但如果我查看我的 gitignore 我无法理解为什么 DepthPeeling nbproject private DepthPeelin
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 当 .gitattributes 中的 EOL 设置为 CRLF 时,Git diff 认为行结尾为 LF

    当我恢复对带有 Windows 行结尾的文件的更改并且 gitattributes 将 EOL 定义为 CRLF 时 git 认为行结尾已更改为 LR 即使十六进制编辑器显示 CRLF 仅当 gitattributes 定义 EOL 字符时
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • Git 提交失败:“请使用 -m 或 -F 选项提供消息。”

    当我键入 git commit 命令来提交文件时 我收到以下错误消息 Microsoft Visual Studio 微软 找不到命令 错误 核心编辑器 Microsoft Visual Studio 存在问题 请使用 m 或 F 选项提供

随机推荐

  • 为什么 didBeginContact 被多次调用?

    在一款使用 Sprite Kit 以及 Sprite Kit 内置物理引擎中的接触检测的 iOS 游戏中 每次英雄与敌人接触时 我都会将他的生命值减少 1 这是从didBeginContact方法 然而 似乎该方法不仅仅在接触开始时被调用一
  • 有一个专用的锁对象有用吗? [复制]

    这个问题在这里已经有答案了 我正在清理遗留的java代码 我发现了以下构造 final class QuiteComplexClass private Object lock new Object void aMethod synchron
  • settings.DATABASES 配置不正确。请提供 NAME 值

    我知道人们以前问过类似的问题 但这完全取决于发动机的价值 有谁知道如何使用 NAME 值解决此错误 我部署到heroku 一切正常 但是 在本地 它给了我这个错误 这是回溯 Traceback File Users qiaoweiliu v
  • Eclipse 挂在“重新索引(完全)存储库 {username}”上

    Eclipse 挂在 重新索引 完全 存储库 home username 上 它最终崩溃并显示 java lang OutOfMemoryError 超出 GC 开销限制 为什么 Eclipse 尝试对主目录建立索引 当主目录是 git 存
  • 弹出窗口中的 Bootstrap 4 输入字段

    问题已在标题中描述 我有一个 Bootstrap 4 模式和一个带有带按钮的输入字段的弹出窗口 在 IE 11 中一切正常 但在 Firefox 中输入失去焦点 Popover data toggle popover popover con
  • 检测图像 openCV 中的文本行[重复]

    这个问题在这里已经有答案了 我的目标是检测所有的每行基础 我看到了许多使用轮廓图像然后生成高光的解决方案 但我希望每行都有它 就像下面这张图片一样 I want this as the output Whereas using those
  • PHP - 计算两个日期之间的天数

    我正在尝试编写一个可以计算两个日期之间的天数的函数 我目前有以下内容 但它给了我一些意想不到的结果 function dayCount from to first date strtotime from second date strtot
  • 当一个 VideoJS 实例启动时,如何暂停页面上所有正在播放的 VideoJS 实例?

    我现在想出了这个解决方案 var myPlayer1 V ID1 var myPlayer2 V ID2 var myFunc1 function var myPlayer1 this myPlayer2 pause myPlayer3 p
  • (Delphi Linux)ld-linux.exe:错误:找不到-lgcc_s

    我已经设置了位于以下位置的 PAserver C Program Files x86 Embarcadero Studio 19 0 PAServer LinuxPAServer19 0 tar gz在我的 Ubuntu Gnome 16
  • angularjs 验证输入并防止无效的更改

    我需要一个输入字段 在其中只能输入值 1 2 或 3 因此我尝试构建一个指令 如果模型与这些值不匹配 则阻止对模型进行所有更改 例如 该值是 1 我将其更改为 5 它应该仍然是 1 我组装了一个小小提琴http jsfiddle net k
  • WCF 生成的代理不包含 *minoccurrs=“0” 的 WSDL 字符串字段的指定属性标志

    我注意到 WCF 代理生成器没有为字符串字段生成 指定 属性标志 EG 当我在 WSDL 中指定的复杂类型上有两个字段时
  • GROUP BY lname ORDER BY 显示错误结果

    我编写的此查询列出了销售竞赛中的前 25 名 但显示了错误的结果 用户没有表明这应该在列表中排得很靠前 知道问题是什么吗 SELECT u fname u lname SUM p point as points FROM comp sale
  • Google App Engine - 数据存储区 get_or_insert key_name 混淆

    我很困惑get or insert 我应该通过什么作为key name 考虑以下示例 class Person db model name db StringProperty required True 假设没有两个人可以有相同的名字 假设
  • 如何在 Informix 中打开和读取文件

    我需要编写一个存储过程 它从包含员工记录 多行 的文本文件中读取输入 并将这些值与员工表中的值进行比较 如果有任何修改 则编辑员工表中的行 我正在使用数据库可视化工具连接类型为 Informix 的工具 由于我是 Informix 的新手
  • 从 csv 文件创建元组列表

    我是 python 初学者 努力在 python 中创建和保存包含 csv 文件中的元组的列表 我现在得到的代码是 def load file filename fp open filename Ur data list for line
  • 从仪器 javascript 脚本中的数据库或文本文件读取数据

    我有一个像这样的脚本 var target UIATarget localTarget var mainWindow target frontMostApp mainWindow var element mainWindow textFie
  • Android 上的后退按钮/后退键会触发哪些操作?

    我真的很困惑 我读过后退按钮 调用 onDestroy 可以关闭您当前正在运行的活动 调用 onPause 我认为 onPause 应该是正确的 但这是一个副作用 因为 Activity 进入后台 我什么也没找到在文档中 但也许我忽略了一些
  • iPhone 资源的单独目录

    默认情况下 iPhone 资源显示在主 xcode 项目视图中可见的 资源 组中 我希望能够将它们放入我决定的计算机上某个任意位置的实际的 物理上独立的目录中 有趣的是 默认的 类 组是一个实际的物理目录 但 资源 组不是 谁能告诉我该怎么
  • 为 wx.TextCtrl 创建子类

    我正在 wxpython 中为 wx TextCtrl 创建一个子类 我希望此类将额外数据添加到 wx TextCtrl 小部件 类似于将额外数据添加到 ComboBox 或 ListBox 的方式 这是我的代码 import wx cla
  • Git 排除分支的文件

    我想忽略分支中的某些文件 而不必依赖于跟踪 gitignore在与其他分支合并期间将被覆盖的文件 我一直密切关注堆栈溢出答案随着链接的博客文章 但我的存储库似乎无法识别指定的excludesfile in my git config Git