为所有子文件夹设置 git 配置值

2024-05-19

我知道可以设置每个存储库的配置来覆盖用户级配置(即/path/to/my/repo/.gitconfig覆盖~/.gitconfig)。是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置?即,我有

|--topLevelFolder1
|--\
|   ---.gitconfig_override
|--\
|   ---childFolder1
|       \---[...]
|--\
|   ---childFolder2
|       \---[...]

我想要定义的设置.gitconfig_override申请在childFolder1 and childFolder2.

我这样做的动机如下:我有一台工作笔记本电脑,我也在业余时间使用它来完成个人项目。我的所有工作代码都嵌套在一个文件夹中。当我推送工作 git 存储库时,我需要使用我的工作角色来执行此操作 - 工作登录名而不是姓名和工作电子邮件。当我推送到我自己的个人 (github) 存储库时,我想使用我的真实姓名和个人电子邮件进行操作。

我想到的其他可能的解决方案(和问题):

  • 为“工作”和“娱乐”创建单独的用户,适当地设置其用户级别设置,并在切换上下文时以适当的用户身份登录(很麻烦,而且我很容易忘记切换)
  • 创建一个脚本,在“workFolder”内搜索 git 存储库,并添加/更新其 .gitconfig 文件以保存适当的详细信息(如果我创建存储库并忘记在推送之前运行该脚本,我将作为错误的人推送)
  • “hack”git,这样每次创建一个存储库时,它都会检查文件路径,并在适当的情况下更新 .gitconfig 文件(复杂、混乱,而且几乎肯定是错误的方法 - 另外,我不会第一个线索如何去做!)

我检查了这个问题 https://stackoverflow.com/questions/4220416/can-i-specify-multiple-users-for-myself-in-gitconfig,它似乎只包含单个存储库的解决方案,而不包含多个存储库的解决方案。希望有人会看到这个问题而错过了这个问题!


正如所提到的内特伊格的编辑 https://stackoverflow.com/a/24463387/1091015, git's 有条件包括 https://git-scm.com/docs/git-config#_conditional_includes非常适合这个。由于这个答案是为 git

首先,在某个位置创建一个新的配置文件,其中包含您想要在子文件夹中生效的设置 - 使用原始问题的文件夹,假设它位于~/topLevelFolder1/.gitconfig_include

In ~/.gitconfig, add:

[includeIf "gitdir:~/toplevelFolder1/"]
    path = ~/topLevelFolder1/.gitconfig_include

的任何子文件夹~/topLevelFolder1现在将包含配置~/toplevelFolder1/.gitconfig_include- 无需手动更改.git/config在每个子文件夹的存储库中。 (这不override子文件夹配置中的任何内容 - 它只是adds正如“包含”所暗示的那样。)

Notes:

  • Within ~/.gitconfig该设置应该位于after您想要覆盖的配置,因为includeIf将被其后的任何配置再次覆盖。
  • 仅当您是时,此设置才包含该文件在存储库中在给定的路径下。如果您位于任何非存储库子路径中,它将被忽略。
  • 尾随正斜杠 (/) 在里面gitdir条件很重要。
  • git config --list非常适合测试这个。您将在下面看到任何覆盖includeIf输出中的行。您还可以使用以下命令检查特定条目:git config --get user.email
  • On 适用于 Windows 的 Git,指定相对于您的用户目录的路径~/以及 Windows 风格驱动器的绝对路径,例如C:/仅使用正斜杠。反斜杠和 Unix 风格的挂载点,例如/c/不工作。此外,在includeIf部分,您必须指定大小写正确的路径,因为比较是区分大小写.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为所有子文件夹设置 git 配置值 的相关文章

  • 通过 http 的私有 git 存储库

    你能推荐任何简单的解决方案来设置可通过http s cleutus建议的 访问的git存储库吗 我有自己的 http 服务器 我想用它来托管一些小型私人项目 在家里我可以通过 ssh 连接 但在工作中防火墙阻止我这样做 有没有免费的方法来设
  • 拉取请求是 Git 的一部分,还是 GitHub、Gerrit 和 Atlassian Stash 等工具的功能?

    Pull 请求似乎是使用 Git 进行代码审查的常用方法 然而 尚不清楚该术语在使用内置函数时是否具有相同的含义 git request pull 或不同的工具 Pull 请求是 Git 的固有功能 还是 GitHub Gerrit 或 A
  • 将某些项目从一个用户帐户移动到另一个用户帐户

    我要换工作公司 但我会继续从事同样的项目 我在 Azure DevOps 上有一些使用 Git 的项目 还有另一个使用 TFVC 的项目 我使用过这些集成在 Visual Studio 上的源代码控制工具 但从未使用过控制台命令 我想将源代
  • 是否应该在 git 中跟踪 .history 文件夹中的文件[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我进行更改时 history 文件夹中的某些文件在我的状态中都会显示为未跟踪 我将如何控制它 即 make 是自动添加或不添加这些内容 而不
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • Git 克隆致命

    我在执行 git clone 时遇到错误 fatal pack has bad object at offset 824775943 inflate returned 1 fatal index pack failed 它仅适用于 Wind
  • .gitignore 文件夹内容[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上忽略 Git 存储库中的目录 https stackoverflow com questions 343646 ignoring directories in git repos
  • 恢复 git reset --soft

    我修改了我的分支中的一些文件并做了一个 git add all 但这添加了一些我不打算为提交添加的文件 所以我做了一个 git reset soft HEAD 2 instead of doing git reset HEAD 但之前的提交
  • 来自 eclipse 的部分 git 提交 (egit)

    假设我有一个有 2 个更改的文件 如何使用 egit 只提交其中之一 命令行版本可以在以下位置找到this https stackoverflow com questions 1085162 commit only part of a fi
  • “git rm --cached”、“git Restore --staged”和“git reset”之间有什么区别

    我遇到了以下三种方法来取消暂存由命令 git add 暂存的文件 git rm cached
  • 如何避免开发人员将凭证推送到 bitbucket?

    我们有一个应用程序 它使用 JSON 文件来定义数据库和其他 API 的连接字符串和凭据 理想情况下 这些凭证作为变量添加到 bitbucket 存储库中 并在 Jenkins 的构建期间进行替换 开发商在当地与他们合作时更换了他们 我们需
  • 如何获取第一次提交的 Git diff?

    我创建了一个存储库 在其中创建了一个文件 在文件中放入了一些内容 然后提交了该文件 现在 我想查看该提交的差异 理想情况下应该显示添加的文件以及添加到其中的行 然而 git diff HEAD HEAD回报fatal ambiguous a
  • 有关多个远程存储库的 Git 状态

    我有一个脚本 如果我忘记在 40 多个存储库中提交或推送一些代码 它会通过电子邮件向我发送提醒 在我的两个项目中 我遵循了这些帖子中的答案 其中我设置了 git push 来推送到多个存储库 从多个远程位置拉 推 https stackov
  • git 命令显示所有(轻量级)标签创建日期

    是否有一个衬垫可以向我显示所有 git 轻量级标签的创建日期 就像是 git show tags format date 我在这个发现link http osdir com ml git 2009 05 msg01404 html适合我需求
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • 从 master 更改为新的默认分支 git

    这是一个场景 我们有一个默认的分支 Master 我们以此为基础 创建分支并向上推等等 我们现在创建了一个Develop分支Master并将其设置为默认开发分支 我想知道的是 我现在如何知道我的 git pull 命令是否通过命令行请求默认
  • 如何使用“gem install”命令从私有 GitHub 存储库安装 gem

    如何在本地安装托管在 GitHub 上的私人存储库中的 gem 特别是 我们通过gem install命令而不是在 Bundler 中使用 因为它是一个命令行工具 我尝试这样做 gem install githubname repo s h
  • Git 中的“分支提示”是什么?

    我正在学习 Git 并阅读专业 Git 书籍 https git scm com book en v2 书中和 Stack Overflow 上有时会使用术语 分支提示 但我找不到它的含义 分支提示是分支上的最后一次提交或最近一次提交 基本
  • 如何将普通的 Git 存储库转换为裸存储库?

    如何将 普通 Git 存储库转换为裸存储库 主要区别似乎是 在普通的 Git 存储库中 你有一个 git存储库内的文件夹 包含构成工作副本的所有相关数据和所有其他文件 在裸露的 Git 存储库中 没有工作副本和文件夹 我们称之为repo g
  • 通过链接进入 git-repo,无需冗长的对话框

    In a directory I have symbolic links into a git administered directory all under Linux Every time I want to e dit such a

随机推荐