• 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 的内容是完全一致的。

  • 相关阅读:
    node 牛逼博客
    NodeJs断点调试详细说明
    .NET 7 中 LINQ 的疯狂性能提升
    nodejs加断点调试方法
    Mac安装mysql新手小白教程
    如何看待由react router原班人马打造并获得三百万美元融资的ts全栈开发框架remix?
    什么是真正的程序员
    测速工具使用心得体会
    SWIG:SWIG的简介、安装、使用方法之详细攻略
    node+yog2+swig
  • 原文地址:https://www.cnblogs.com/ibingshan/p/11592360.html
Copyright © 2020-2023  润新知