基于多个github实例

时间:2016-07-06 18:10:28

标签: git github

我正在尝试为我工作中的所有提交全局启用几个git hook。我通过设置

来实现这一目标
git config --global init.templatedir '~/.git_template'

我想启用此功能,以确保我工作中的所有提交消息都具有相应的错误ID。这完全符合我的预期。

现在我的问题是,当我想向我的个人github帐户提交某些内容时,会触发这些我不想要的挂钩。

如何仅将这些全局模板限制为特定的github实例?我可以通过配置$HOME/.ssh/config文件来分离SSH密钥。这里有类似的东西吗?

我的限制很少:

  • 工作实例
  • 不允许服务器端挂钩
  • 如果我必须手动设置$REPO/.git/hooks文件夹,它会失败,因为我必须始终提醒自己设置它们

2 个答案:

答案 0 :(得分:0)

您不想在当地将配置设置为您的仓库吗?所以不是做--global,而是做一个--local,所以配置选项在两个repos之间有所不同(假设你有两个不同的repos,一个用于工作,另一个用于你的个人/家庭用途)。

来自https://git-scm.com/docs/git-config: " ...编写时,默认情况下将新值写入存储库本地配置文件,并且可以使用选项--system, - global, - file来告诉命令写入该位置(你可以说--local但这是默认的。)"

- 全球

对于写入选项:写入全局〜/ .gitconfig文件而不是存储库.git / config,如果此文件存在且写入〜/ .gitconfig文件,则写入$ XDG_CONFIG_HOME / git / config文件。

对于阅读选项:只读全局〜/ .gitconfig和$ XDG_CONFIG_HOME / git / config而不是所有可用文件。

- 本地

写入选项:写入存储库.git / config文件。这是默认行为。

对于阅读选项:只读取存储库.git / config而不是所有可用文件。

答案 1 :(得分:0)

有几种方法可以解决这个问题:

首先,您可以使用单独的git别名,例如clone-personalinit-work,它们会向--templateclone子命令传递不同的init参数每个环境。当然,您必须记住使用这些别名而不是简单的initclone,这不是理想的。

对于克隆,您可以通过将传入的URL与特定模式匹配来进一步采取上述步骤,以确定它是工作与个人地址,然后自动传递正确的--template选项。这将允许您使用一个脚本/别名进行克隆。

如果你有别名执行shell命令(或者只是使用单独的shell脚本而不是git别名),它也可以查看你环境中的任何内容(例如,$ PWD以确定你是否在& #34; work"子目录或" personal"子目录)然后将不同的--template选项传递给git。然后你可以使用一个别名/脚本/ bash函数(对于每个子命令)。

如果您的工作与个人存储库之间存在其他配置项(除了挂钩),您可能希望使用更简单的选项,而不是全局定义user.email配置字段。在这种情况下,git将禁止您在第一次尝试时提交,并且您需要定义user.email配置字段。然后,您可以使用在存储库中手动运行的自定义别名/脚本/ bash函数来配置它以用于“工作”。或者'个人'环境。例如,git-config-work bash函数可以在您的钩子中复制,并在本地配置user.email以进行工作存储库提交。