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,…是遥控器的名称。