是否可以为 git 定义网站变量?

是否可以为 git 定义网站变量?

我希望能够运行类似这样的操作:

git clone mw/Math.git

其中mwequals: https://git.wikimedia.org/git/mediawiki/extensions,即 MediaWiki 扩展 git 存储库。无需运行此命令的完整形式:

git clone https://git.wikimedia.org/git/mediawiki/extensions/Math.git

有没有办法定义这个变量mw以便 git 能够理解它?

答案1

据我所知,没有,但你可以将它们定义为 Bash 变量:

MW="https://git.wikimedia.org/git/mediawiki/extensions"
git clone $MW/Math.git

为了使该定义坚持下去,您需要将其放在类似的地方~/.bashrc(在每个 Bash 会话加载时运行)。


Rinzwind 在评论中的想法与我的正好相反:创建调用git并将视为Math变量的函数或脚本。同样,您可以直接进入 Bash 会话并进行测试,然后将其保留在~/.bashrc

function mw {
    git clone https://git.wikimedia.org/git/mediawiki/extensions/$1.git
}

mw Math

或者将其保存为脚本~/bin/mw(和chmod +x它):

#!/bin/sh
git clone https://git.wikimedia.org/git/mediawiki/extensions/$1.git

如果您必须创建,则~/bin/在打开新的 Bash 会话之前不会将其添加到路径中。

答案2

这看起来就像远程仓库中所做的一样:

$ git init ttt
Initialized empty Git repository in /tmp/user/1000/home-tmp/ttt/.git/
$ cd ttt 
$ git remote
$ git remote add mw https://git.wikimedia.org/git/mediawiki/extensions
$ git remote                                                          
mw
$ git remote --verbose 
mw      https://git.wikimedia.org/git/mediawiki/extensions (fetch)
mw      https://git.wikimedia.org/git/mediawiki/extensions (push)

但通常情况下,就像在这种情况下,远程是存储库配置的一部分。

注意:全局远程不适用于克隆 - 因此它并不适合这个问题。

您需要的是全局定义的遥控器。
从技术上讲,我认为没有理由反对这样做 - 而且它似乎基本上可以工作:

将在某些(甚至是空的)存储库中创建的远程配置部分移动到全局配置中:

从中删除部分ttt/.git/config

[remote "mw"]
    url = https://git.wikimedia.org/git/mediawiki/extensions
    fetch = +refs/heads/*:refs/remotes/mw/*

$ git remote --verbose                                                

并将其插入到~/.gitconfig

$ git remote --verbose
mw      https://git.wikimedia.org/git/mediawiki/extensions (fetch)
mw      https://git.wikimedia.org/git/mediawiki/extensions (push)

相关内容