2030. gitLab A仓同步到B仓

文章目录

  • [1 A 仓库备份 到 B 仓库](#1 A 仓库备份 到 B 仓库)
  • [2 B 仓库修改main分支的权限](#2 B 仓库修改main分支的权限)

1 A 仓库备份 到 B 仓库

bash 复制代码
#!/bin/bash

# 定义变量
REPO_DIR="/home/xhome/opt/git_sync/zz_xx_xx"  # 替换为你的本地库A的实际路径
REMOTE_ORIGIN="http://192.168.1.66:8181/zzkj_software/zz_xx_xx.git"        # 库A的URL
REMOTE_BACKUP="http://192.168.1.67:8181/zzkj_software/zz_xx_xx.git"  # 库B的URL
BRANCH_NAME="main"  # 分支名称

# 进入仓库目录
cd "$REPO_DIR" || exit

# 检查是否有新的提交到 REMOTE_BACKUP
echo "Checking for new commits on REMOTE_BACKUP..."
git fetch "$REMOTE_BACKUP" "$BRANCH_NAME"
if [ $(git rev-list --count HEAD...FETCH_HEAD) -gt 0 ]; then
    echo "WARNING: There are new commits on REMOTE_BACKUP. These will be overwritten."
    read -p "Do you want to continue and force push? (y/n): " choice
    if [ "$choice" != "y" ]; then
        echo "Aborting."
        exit 1
    fi
fi

# 获取最新的远程信息,并记录远程分支的最新提交哈希值
echo "Fetching the latest changes from REMOTE_BACKUP..."
git fetch "$REMOTE_BACKUP" "$BRANCH_NAME"
REMOTE_BRANCH_HASH=$(git rev-parse FETCH_HEAD)

# 强制推送更新到远程备份库,使用 --force-with-lease 并指定预期的远程分支哈希值
echo "Pushing updates to REMOTE_BACKUP with --force-with-lease..."
if ! git push --force-with-lease="refs/heads/$BRANCH_NAME:$REMOTE_BRANCH_HASH" "$REMOTE_BACKUP" "$BRANCH_NAME"; then
    echo "Failed to push updates to REMOTE_BACKUP. Please check your repository state."
    exit 1
fi

# 强制推送所有标签到远程备份库
echo "Pushing tags to REMOTE_BACKUP..."
if ! git push "$REMOTE_BACKUP" --tags; then
    echo "Failed to push tags to REMOTE_BACKUP. Please check your repository state."
    exit 1
fi

# 可选:清理本地不再需要的远程跟踪分支和标签
# git remote prune backup

echo "Synchronization completed successfully."

2 B 仓库修改main分支的权限

  • main 分支允许强制推送即可.
相关推荐
HIT_Weston5 小时前
63、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(七)
前端·ubuntu·gitlab
HIT_Weston8 小时前
65、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(九)
前端·ubuntu·gitlab
victory043110 小时前
GitLab部署报告
gitlab
HIT_Weston10 小时前
64、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(八)
前端·ubuntu·gitlab
HIT_Weston11 小时前
62、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(六)
前端·ubuntu·gitlab
不爱吃米饭_1 天前
Gitea 轻量级的Git方案 - Gitlab的替代品
git·gitlab·gitea
嘻哈baby1 天前
自建GitLab与CI/CD实战:团队协作完整方案
ci/cd·gitlab
秦时明月天明1 天前
GitLab SSH Key 过期:git pull failed : remote your ssh key has expired
git·ssh·gitlab
极限实验室2 天前
程序员爆哭!我们让 COCO AI 接管 GitLab 审查后,团队直接起飞:连 CTO 都说“这玩意儿比人靠谱多了
人工智能·gitlab
HIT_Weston3 天前
61、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(五)
前端·ubuntu·gitlab