我希望能够运行类似这样的操作:
git clone mw/Math.git
其中mw
equals: 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)