Git仓库与生产服务器代码精细化合并方案咨询
解决方案:将生产服务器代码同步至已有Git仓库(保留仓库现有变更,不影响生产运行)
以下是分阶段的实操步骤,完全匹配你的需求:
1. 本地搭建对比与同步环境
- 克隆团队已创建的Git仓库到本地:
git clone <你的仓库地址> ./git-repo - 从生产服务器拉取完整代码到本地临时目录(用rsync规避权限和目录结构问题):
rsync -avz 你的生产服务器用户名@生产服务器IP:/生产项目根目录 ./prod-temp
2. 筛选并同步指定文件(忽略仓库已有变更的文件)
- 进入本地Git仓库目录:
cd ./git-repo - 导出仓库中相对于远程主分支(以
main为例)已变更的文件列表:git diff --name-only origin/main > ../changed-files.txt - 从临时生产目录同步文件到仓库,自动排除上述已变更的文件:
rsync -avz --exclude-from='../changed-files.txt' ../prod-temp/ ./注意:
../prod-temp/末尾的斜杠是同步目录内的所有内容,而非目录本身,避免出现目录嵌套问题。
3. 验证并提交同步结果
- 查看仓库变更,确认只有仓库未修改、但生产有差异的文件被更新:
git status - 对比文件内容,确保同步的是生产环境的正确版本:
git diff - 提交并推送变更到远程仓库:
git add . git commit -m "同步生产环境代码(排除仓库已修改的文件)" git push origin main
4. 保障生产服务器正常运行(暂不接入Git)
- 整个同步过程中,生产服务器完全不涉及Git操作,继续使用原有代码运行,无任何影响。
- 后续测试阶段:在测试服务器克隆远程仓库,部署代码完成测试。
- 测试通过后,再在生产服务器安装Git,克隆仓库并切换到对应分支,完成生产环境的Git接入。
5. 多服务器同步期间的生产稳定性注意事项
- 生产服务器接入Git前,务必备份现有代码:
tar -czf prod-backup-$(date +%Y%m%d).tar.gz /生产项目根目录 - 接入Git时选择业务低峰期,同步后验证生产服务是否正常启动。
- 提前配置
.gitignore文件,排除生产环境的日志、临时文件、本地配置等(比如logs/、temp/、local-config.ini),避免后续提交冲突。
内容的提问来源于stack exchange,提问作者Иван Александров
相关产品推荐
相关产品推荐

