Git 克隆存储库时导入别名

Git 克隆存储库时导入别名,git,git-clone,git-alias,Git,Git Clone,Git Alias,我有一个带有repo/.git/config文件的存储库,其中定义了别名 有没有简便的方法可以将这些别名导入由git-clone-repo-repo-clone命令生成的repo-clone/.git/config文件中 这两个存储库位于不同的设备上,因此我无法使用witch,因为witch使用全局配置文件($HOME/.gitconfig) 编辑 我找到了一个新的答案,与克隆时导入别名的特殊情况更相关,请参见下面的评论。您不能仅作为克隆的自动结果而在目标回购的配置中设置别名。这样一个功能可能会

我有一个带有
repo/.git/config
文件的存储库,其中定义了别名

有没有简便的方法可以将这些别名导入由
git-clone-repo-repo-clone
命令生成的
repo-clone/.git/config
文件中

这两个存储库位于不同的设备上,因此我无法使用witch,因为witch使用全局配置文件($HOME/.gitconfig)

编辑


我找到了一个新的答案,与克隆时导入别名的特殊情况更相关,请参见下面的评论。

您不能仅作为克隆的自动结果而在目标回购的配置中设置别名。这样一个功能可能会被滥用,因为这意味着我可以通过让你克隆我的repo并让它设置一个你不希望使用的别名来欺骗你运行我选择的任意代码

但是,马克,别名不能覆盖内置的git命令

好吧,但如果我试图传播某种恶意软件,我可能只需要在某些时候愚弄一些人。很多人都有一个“co”别名,或者当他们的意思是“checkout”时,很难键入“chekcout”;这样我就可以把这样的事情化名了。您可能不想盲目地接受任何可能执行的旧
克隆操作中的配置

您可以创建一个脚本来设置别名配置,并将其包含在repo中。然后,克隆回购协议的人可以运行脚本(如果他们信任您,或者已经检查了脚本并确信它是安全的)


对于受信任的repo,您甚至可以设置一个钩子,以便在签出或其他操作时运行,以便在repo内容更改时更新别名配置。同样,本地用户是否实际配置此钩子也是安全所必需的。我认为此类别名的正确位置应该是存储库本身的跟踪文件中,如果需要,由新存储库的创建者将其复制到
.git/config
.git/config
包含与存储库关联的配置,而不是存储库的一部分……在项目的根目录中放入包含任何命令的脚本,并要求用户在首次克隆时运行它。@chepner您指出了一件非常有趣的事情!您似乎无法指出您为此存储库定义的某些别名实际上是它的一部分。由于别名包含在配置文件中,它们必须遵守相同的约束。我的问题存在于受信任的环境中(没有从外部克隆),但我理解安全问题。对于普通用户来说,配置钩子可能有点棘手,所以在克隆之后,我将进行额外的“脚本设置步骤”。考虑到安全限制,提供更高级别的附加链接看起来是最好的解决方案。我只需要为用户提供别名,以便管理我想象的分支逻辑,我希望有一个“随时可用”的东西。找到git clone命令的
--config
(或
-c
)选项(例如:
git clone--config alias.last='log-1 HEAD'
)。这不是完全自动的,但我想如果你有几个别名要设置,它可以完成这项工作。