git - 如何根据我要克隆的 git 存储库来源自动更改我的本地 git config `user.email`?
问题描述
我在我的笔记本电脑上主要使用两种类型的存储库,一方面,用于我的工作项目,另一种用于 oss 项目,但它们使用不同user.email
(git config --list
相同user.name
)。
我想知道user.email
当我克隆一个新项目时,是否有一种方法可以从一开始就正确设置(存储库的本地)(知道全局配置设置为我的 oss 项目)。
原因是我时不时忘记手动设置我的工作项目的本地配置并最终推送用错误用户(即 oss 用户)签名的提交,然后我不得不重新设置最后 N 次提交左右,这可能很烦人。
解决方案
Git 本身并没有办法精确地完成您所要求的事情。不过,有两种明显的方法可以获得相同的结果。
其中一个使用 Git 2.13 版中的一项新功能,称为
includeIf
. 在这里,您将使用存储库集合中的位置来确定如何配置项目。有关详细信息,请参阅个人和工作配置文件的 Git includeIf 不起作用。另一种是停止使用
git clone
来制作克隆。相反,编写您自己的命令,由 runninggit clone
和 running组成git config
。在这里提到这个,我会称它为git clone-and-config
虽然你可能想要一个短名称,如git cc
.此命令可以是使用语法运行多个命令的 Git别名,也可以是 Git 可以找到以便运行您的脚本的脚本。当然,如果您要编写自己的脚本,您可以随意调用它,并在不带前缀的情况下调用它。使用前缀的唯一原因是让它感觉像是“Git 的一部分”,即使是你自己写的。
!
git-clone-and-config
git clone-and-config
git-clone-and-config
git
git
有关此替代方案的详细信息,请参阅如何将 bash 脚本直接嵌入到 git 别名中。
最后一点:git clone
可以在新克隆中设置配置值git clone
。因此,您可以将最后一部分简化为:
git clone -c 'user.email=A U Thor <thor@example.com>' <url>
这意味着您可以将其设为非!
样式 Git 别名:
[alias]
cloneasfred = git clone -c 'user.email=Fred Flintstone <fflint@bedrock.prehisory>'
cloneasbarney = git clone -c 'user.email=Barney Rubble <brub@bedrock.prehistory>'
当心! git -c user.email=... clone
没有做正确的事,而git clone -c user.email=...
做。的位置在-c
这里至关重要。
推荐阅读
- python - 在所选位置周围的矩形区域内创建附近位置列表
- python - 使用 Starlette 提供预压缩文件,当请求未压缩时,但 'accept-encoding' 包括 'gzip'
- wpf - 来自 DataTemplate 的相对数据绑定
- ruby - 厨师 - 将价值从一种资源传递到另一种资源
- javascript - 如何使用来自 url 的登录名和密码来获取请求
- intellij-idea - 我如何 grep Intellij 的构建时间通知 - 哪个日志文件有这些?
- snowflake-cloud-data-platform - 使用 SHOW_INITIAL_ROWS 参数创建的雪花流在选择时引发错误
- r - R:如果条目以字母结尾,则将上面一或两行的信息粘贴到空单元格中
- python - 在 Windows 上: :Go 构建失败并出现错误 ./go-python.h:4:10: fatal error: Python.h: No such file or directory #include "Python.h"
- python - 如何根据id的groupby从先前的测量中创建一个标记(1 - 体重减轻;0 - 相同体重a)体重减轻(8%或更多)的列?