跳转至

Git 多服务器源码同步

概要: 以本地为支点,将服务器A上的仓库同步到服务器B上

创建时间: 2023.08.08 22:46:28

更新时间: 2023.08.24 22:43:31

准备工作

  1. 确保在服务器A和B上有git push的权限
  2. 确保服务器B上已经新建my-repo空仓库

从服务器A克隆源码到本地

Bash
git clone ssh://server-a/username/my-repo.git

进入本地仓库配置目标服务器B

Bash
cd my-repo
git remote add target ssh://server-b/username/my-repo.git

推送本地源码到目标服务器B

提示

如果需要推送本地所有分支到新的服务器B,首先需要在本地检出这些分支,命令为
for remote in $(git branch -r | grep -v master); do git checkout --track $remote ; done
然后执行下面的操作

推送本地所有的分支

Bash
git push target --all

推送本地所有的tag

Bash
git push target --tags

推送本地所有的分支和tag

Bash
git push target --mirror

推送简易流程

Bash
1
2
3
4
git clone old-url
git remote add target new-url
git push -u target --tags 'refs/remotes/origin/*:refs/heads/*'
git push target --delete HEAD  # 避免远程认为HEAD也是一个分支名

如何将服务器B设为主服务器?

使用下面的命令可以查看当前git仓库的远程服务器信息

Bash
git remote -v
下面的操作将会把服务器B作为默认的origin源服务器,注意此举将覆盖已有的配置
Bash
git remote set-url origin ssh://server-b/username/my-repo.git

参考

Push local Git repo to new remote including all branches and tags - Stack Overflow