zoukankan      html  css  js  c++  java
  • git 在不同服务器主机上同步 git 仓库

    git 在不同服务器主机上同步 git 仓库

    参考链接:https://opentechguides.com/how-to/article/git/177/git-sync-repos.html

    1.在本地的一个文件夹中执行:

    git clone --mirror ssh://[url]/repo_name.git

    2.添加一个remote:

    cd ropo_name.git

    git remote add --mirror=fetch <secondary_romote_name> ssh://[url]/secondary_repo_name.git

    注:secondary_repo_name.git 是另外一个服务器上希望同步的git仓库

    3.同步

    git fetch origin

    git push <secondary_remote_name> --all  #这是把所有分支都push

    如果想单独push一个分支:

    git push <secondary_remote_name> <branch>

    例如:

    git push <secondary_remote_name> master

    设置默认的 push,下次只用 git push 即可:

    git push -u <secondary_remote_name> master

    4.在remote中添加多个可 push 的 url

    有时候我们不止有多一个 remote 的 git 仓库,我们希望在 push 一个 remote 的时候,同时更新多个 url

    git remote set-url --add --push <secondary_remote_name> <url>  #注意:一定要把第一个 url 也执行一次,不然每次push ,只会push 你 add 的那些 url,fetch url 并不会push

    git remote set-url --add --push <secondary_remote_name> <url_2>

    其实这是在 git config 中添加了相应的内容(蓝色):

     

    [remote "secondary_remote_name"]
    url = ssh://[path]/repo_name.git
    fetch = +refs/*:refs/*
    pushurl = ssh://[path]/repo_name.git
    pushurl = ssh://[path_2]/repo_name_2.git

    所以我们可以直接在该 remote section 下面复制修改即可,是不是很方便

    分析:

      通过 --mirror 克隆的是一个 bare repo,里面的内容和服务器的一样,进入仓库后,显示的分支是[BARE:master],在这个文件夹里面,不能使用 work tree 相关的 git 命令,例如 git status,git pull。

      secondary_repo_name.git 和 repo_name.git 的内容是完全一致的。

  • 相关阅读:
    临床文档数据结构之数据元目录
    电子病历的发展
    临床文档数据结构之数据元公用属性
    关于数据字典表
    临床文档数据结构之数据组分类
    电子病历编辑器开发
    从某行开始续打当前页
    临床文档数据结构之文档分类
    Open Flash Chart 初体验
    JQuery总结
  • 原文地址:https://www.cnblogs.com/ibingshan/p/11592360.html
Copyright © 2011-2022 走看看