我经常发现自己在打这个:
git push remote1 branch1 branch2 tag1 tag2 tag3..
git push remote2 branch1 branch2 tag1 tag2 tag3..
我希望有一个别名,可以用它代替我需要输入的内容:
git pushall branch1 branch2 tag1 tag2 tag3 ..
注意:我知道我可以创建一个新的远程“all”并使用多个URL。让我们不在这里讨论这个问题,而是专注于别名!我可以硬编码远程名称,因为我有很多项目都有相同的多个远程名称(通常是“drupal”和“github”)。
到目前为止的进展:
我已经想出了一个非可变参数版本:
[alias]
pushall = "!git push github $1; git push drupal $1; #"
这里有两个技巧:
- 使用双引号来防止 ';' 在
.ini
文件中具有特殊含义 #
可以忽略行末的内容。
但这只能一次推送一个分支或标签。所以我需要输入以下命令:
git pushall branch1
git pushall branch2
git pushall tag1
git pushall tag2
git pushall tag3
...
我希望有一个别名,可以输入以下内容:
git pushall branch1 branch2 tag1 tag2 tag3 ..
为什么不能有多个push urls的新远程“all”?
正如所说,让我们专注于别名,以便读者可以找到他们正在寻找的内容。
无论如何,以下是我不创建远程“all”的原因:
- 我必须在每个项目中都这样做,而不能在全局范围内执行。在我的情况下,将远程名称硬编码到全局别名中实际上是可行的!
- 据我所知,我会在历史记录中污染引用,如“all/branch1”,而不是或除了“remote1/branch1”和“remote2/branch1”之外。
讨论这个问题的正确地方在这里:从多个远程位置拉取/推送
另请参阅
以下内容与可变参数无关,但它们没有涉及到:
以下内容可能有所帮助,但它涉及到纯shell脚本,而不是特定的git别名:
$@
在 shell 脚本中表示可变参数,在 git 别名中也适用。我之前并不知道这一点。现在我不知道该接受哪个答案了... 我再看看吧。 - donquixote