如何根据git存储库来源I';自动更改我的本地git配置`user.email`;我是从哪里克隆的?

如何根据git存储库来源I';自动更改我的本地git配置`user.email`;我是从哪里克隆的?,git,Git,我在笔记本电脑上主要使用两种类型的存储库,一方面用于我的工作项目,另一方面用于oss项目,但它们在git config--list中使用不同的user.email(相同的user.nametho) 我想知道,当我克隆一个新项目时(知道全局配置已设置为我的oss项目),是否有办法从一开始就正确设置user.email(存储库的本地配置) 原因是,我时常忘记手动设置我工作项目的本地配置,最终推送与错误用户(即oss用户)签署的提交,然后我不得不重新设置最后N个提交的基础,这可能非常烦人。Git本身无

我在笔记本电脑上主要使用两种类型的存储库,一方面用于我的工作项目,另一方面用于oss项目,但它们在
git config--list
中使用不同的
user.email
(相同的
user.name
tho)

我想知道,当我克隆一个新项目时(知道全局配置已设置为我的oss项目),是否有办法从一开始就正确设置
user.email
(存储库的本地配置)


原因是,我时常忘记手动设置我工作项目的本地配置,最终推送与错误用户(即oss用户)签署的提交,然后我不得不重新设置最后N个提交的基础,这可能非常烦人。

Git本身无法精确地完成您要求的操作。不过,有两种明显的方法可以获得相同的结果

  • 其中一个使用了Git版本2.13中的一个新特性,名为
    includeIf
    。在这里,您将使用存储库集合中的位置来确定如何配置项目。有关详细信息,请参阅

  • 另一种方法是停止使用
    git clone
    进行克隆。而是编写自己的命令,其中包括运行
    git clone
    ,然后运行
    git config
    。为了在这里引用它,我将其命名为
    git clone and config
    ,尽管您可能需要一个像
    git cc
    这样的短名称

    此命令可以是使用
    的Git别名
    语法来运行多个命令,或者git可以找到名为
    git clone and config
    的脚本,以便
    git clone and config
    运行您的
    git clone and config
    脚本。当然,如果您要编写自己的脚本,您可以随意调用它,并在不使用
    git
    前缀的情况下调用它。使用
    git
    前缀的唯一原因是让它感觉像是“git的一部分”,即使它是您自己编写的

    有关此备选方案的详细信息,请参阅

最后一点注意:
git clone
可以在
git clone
时间在新克隆中设置配置值。因此,您可以将最后一部分简化为:

git clone -c 'user.email=A U Thor <thor@example.com>' <url>

小心<代码>git-c user.email=。。。clone做得不对,而git clone-c user.email=…做得对。在这里,
-c
的位置至关重要。

Git本身无法精确地完成您所要求的任务。不过,有两种明显的方法可以获得相同的结果

  • 其中一个使用了Git版本2.13中的一个新特性,名为
    includeIf
    。在这里,您将使用存储库集合中的位置来确定如何配置项目。有关详细信息,请参阅

  • 另一种方法是停止使用
    git clone
    进行克隆。而是编写自己的命令,其中包括运行
    git clone
    ,然后运行
    git config
    。为了在这里引用它,我将其命名为
    git clone and config
    ,尽管您可能需要一个像
    git cc
    这样的短名称

    此命令可以是使用
    的Git别名
    语法来运行多个命令,或者git可以找到名为
    git clone and config
    的脚本,以便
    git clone and config
    运行您的
    git clone and config
    脚本。当然,如果您要编写自己的脚本,您可以随意调用它,并在不使用
    git
    前缀的情况下调用它。使用
    git
    前缀的唯一原因是让它感觉像是“git的一部分”,即使它是您自己编写的

    有关此备选方案的详细信息,请参阅

最后一点注意:
git clone
可以在
git clone
时间在新克隆中设置配置值。因此,您可以将最后一部分简化为:

git clone -c 'user.email=A U Thor <thor@example.com>' <url>

小心<代码>git-c user.email=。。。clone做得不对,而git clone-c user.email=…做得对。
-c
的位置在这里至关重要。

非常感谢!这真的很彻底。非常感谢!这真的很彻底。