git同时推送到多个存储库

我怎样才能使git push不仅推动origin而且还推出另一个远程存储库?

因为git push只是git push origin的别名,我可以别名git push来同时推送到2个远程仓库(只用一个命令)?

我不在这里寻找一个非git脚本,但想在git中为我的本地存储库进行设置。

当我尝试后推脚本我失败了。

我不认为你可以通过在git上设置一个标志来做到这一点,但你可以修改一个configuration文件,允许你推送到多个远程存储库,而无需手动input全部(只有在第一次input它们,之后)

.git/config文件中,您可以将多个URL添加到已定义的远程:

 [remote "all"] url=ssh://user@server/repos/g0.git url=ssh://user@server/repos/g1.git 

如果你现在git push all东西推到所有的远程url。

没有手动编辑

您可以使用git config --add remote.xyz.url通过不同的URL直接从命令行添加多个URL到远程分支(例如all ):

 git config --add remote.all.url ssh://user@server/repos/g0.git git config --add remote.all.url ssh://user@server/repos/g1.git 

全自动

如果您超级懒惰 ,不忍复制/贴上url几次,这是给你的:

 function git-add-push-all() { while read -r name url method; do git config --add remote.all.url "$url" done < <(git remote -v | awk '!/^all/ && /push/') } git-add-push-all # from git (sub)directory 

一个完整的bashy脚本是可能的(testing$name$method ),但awk是甜蜜的,每个人都有爱。

然后你可以推到所有的遥控器

 git push all 

参考

  • git-config(1)手册页

您也可以从configuration的遥控器获取url:

 for repo in g0 g1 ... do git config --add remote.all.url `git config remote.$repo.url` done 

g0,g1,…是遥控器的名称。