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

  • 相关阅读:
    Leetcode 238. Product of Array Except Self
    Leetcode 103. Binary Tree Zigzag Level Order Traversal
    Leetcode 290. Word Pattern
    Leetcode 205. Isomorphic Strings
    Leetcode 107. Binary Tree Level Order Traversal II
    Leetcode 102. Binary Tree Level Order Traversal
    三目运算符
    简单判断案例— 分支结构的应用
    用switch判断月份的练习
    java基本打印练习《我行我素购物系统》
  • 原文地址:https://www.cnblogs.com/ibingshan/p/11592360.html
Copyright © 2011-2022 走看看