web-map/sync_workflow.md

3.2 KiB
Raw Blame History

Git多远程仓库同步工作流

仓库配置

  • upstream: http://192.168.189.2:8418/amr.core/web-amr (镜像仓库,只读)
  • origin: http://192.168.189.2:8418/xudan/web-map (你的仓库,可读写)

日常工作流程

1. 从镜像仓库获取最新代码

# 获取镜像仓库的最新代码
git fetch upstream

# 查看镜像仓库的更新
git log HEAD..upstream/master --oneline

2. 合并镜像仓库的最新代码到本地

# 方法1: 使用merge (推荐,保留完整历史)
git merge upstream/master

# 方法2: 使用rebase (如果你想要线性历史)
git rebase upstream/master

3. 推送到你的仓库

# 推送到你的仓库
git push origin master

完整的同步脚本

方法1: 使用merge

#!/bin/bash
echo "开始同步镜像仓库..."

# 获取镜像仓库最新代码
git fetch upstream

# 检查是否有新的提交
if git log HEAD..upstream/master --oneline | grep -q .; then
    echo "发现镜像仓库有新的提交,开始合并..."

    # 合并镜像仓库的代码
    git merge upstream/master

    # 推送到你的仓库
    git push origin master

    echo "同步完成!"
else
    echo "镜像仓库没有新的提交,检查本地是否有未推送的修改..."

    # 检查是否有本地修改需要推送
    if git log origin/master..HEAD --oneline | grep -q .; then
        echo "发现本地有未推送的修改,推送中..."
        git push origin master
        echo "推送完成!"
    else
        echo "没有需要同步的内容。"
    fi
fi

方法2: 使用rebase (如果你想要更干净的历史)

#!/bin/bash
echo "开始同步镜像仓库..."

# 获取镜像仓库最新代码
git fetch upstream

# 检查是否有新的提交
if git log HEAD..upstream/master --oneline | grep -q .; then
    echo "发现镜像仓库有新的提交开始rebase..."

    # rebase到镜像仓库的最新代码
    git rebase upstream/master

    # 推送到你的仓库 (可能需要force push)
    git push origin master --force-with-lease

    echo "同步完成!"
else
    echo "镜像仓库没有新的提交,检查本地是否有未推送的修改..."

    # 检查是否有本地修改需要推送
    if git log origin/master..HEAD --oneline | grep -q .; then
        echo "发现本地有未推送的修改,推送中..."
        git push origin master
        echo "推送完成!"
    else
        echo "没有需要同步的内容。"
    fi
fi

推荐的工作流程

  1. 每天开始工作前: 运行同步脚本,确保有最新的镜像仓库代码
  2. 进行本地开发: 正常开发你的功能
  3. 提交本地修改: git addgit commit
  4. 推送前再次同步: 运行同步脚本,确保没有冲突
  5. 推送到你的仓库: git push origin master

处理冲突

如果在合并时遇到冲突:

  1. 解决冲突文件
  2. git add 冲突文件
  3. git commit 完成合并
  4. git push origin master

注意事项

  • 使用 --force-with-lease 而不是 --force 来避免意外覆盖其他人的提交
  • 定期清理本地分支: git branch -d <branch-name>
  • 如果镜像仓库有大量更新,考虑创建一个新分支来处理合并