git同时推送到多个存储库

Kis*_*aki 84 git version-control dvcs

我怎样才能git push不仅推送到origin另一个远程存储库?

因为git push它只是一个别名git push origin,我可以将git push命名为同时推送到2个远程存储库(只用那个命令)吗?

我不是在寻找一个非git脚本,但是想在git中为我的本地存储库设置它.

当我用推后脚本尝试它时,我失败了.

g19*_*tic 129

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

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

[remote "all"]
    url=ssh://user@server/repos/g0.git
    url=ssh://user@server/repos/g1.git
Run Code Online (Sandbox Code Playgroud)

如果你git push all现在推送到所有远程网址.


Édo*_*pez 56

没有手动编辑

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

git config --add remote.all.url ssh://user@server/repos/g0.git
git config --add remote.all.url ssh://user@server/repos/g1.git
Run Code Online (Sandbox Code Playgroud)

全自动

如果你是超级懒惰并且不忍心多次复制/粘贴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
Run Code Online (Sandbox Code Playgroud)

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

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

git push all
Run Code Online (Sandbox Code Playgroud)

参考