web-map/sync_workflow.md

129 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Git多远程仓库同步工作流
## 仓库配置
- **upstream**: `http://192.168.189.2:8418/amr.core/web-amr` (镜像仓库,只读)
- **origin**: `http://192.168.189.2:8418/xudan/web-map` (你的仓库,可读写)
## 日常工作流程
### 1. 从镜像仓库获取最新代码
```bash
# 获取镜像仓库的最新代码
git fetch upstream
# 查看镜像仓库的更新
git log HEAD..upstream/master --oneline
```
### 2. 合并镜像仓库的最新代码到本地
```bash
# 方法1: 使用merge (推荐,保留完整历史)
git merge upstream/master
# 方法2: 使用rebase (如果你想要线性历史)
git rebase upstream/master
```
### 3. 推送到你的仓库
```bash
# 推送到你的仓库
git push origin master
```
## 完整的同步脚本
### 方法1: 使用merge
```bash
#!/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 (如果你想要更干净的历史)
```bash
#!/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 add``git 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>`
- 如果镜像仓库有大量更新,考虑创建一个新分支来处理合并