3.2 KiB
3.2 KiB
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
推荐的工作流程
- 每天开始工作前: 运行同步脚本,确保有最新的镜像仓库代码
- 进行本地开发: 正常开发你的功能
- 提交本地修改:
git add
和git commit
- 推送前再次同步: 运行同步脚本,确保没有冲突
- 推送到你的仓库:
git push origin master
处理冲突
如果在合并时遇到冲突:
- 解决冲突文件
git add
冲突文件git commit
完成合并git push origin master
注意事项
- 使用
--force-with-lease
而不是--force
来避免意外覆盖其他人的提交 - 定期清理本地分支:
git branch -d <branch-name>
- 如果镜像仓库有大量更新,考虑创建一个新分支来处理合并