使用Git在开发、预生产、生产环境迁移的分支合并与文件追踪疑问
一、从development到preproduction再到production的合并流程
核心逻辑是保证目标分支先同步最新代码,再合并上游分支,处理冲突后推送。分命令行直接操作和团队协作的Pull Request两种方式:
命令行操作步骤
确认feature到development的合并(你已完成的步骤,补充标准流程):
- 切换到本地development分支:
git checkout development - 拉取远程最新代码:
git pull origin development - 合并你的feature分支:
git merge feature/你的分支名称 - 处理代码冲突,解决后提交:
git add .→git commit -m "Merge feature/xxx into development" - 推送到远程仓库:
git push origin development
- 切换到本地development分支:
从development合并到preproduction:
- 切换到preproduction分支:
git checkout preproduction - 拉取远程最新的preproduction代码:
git pull origin preproduction - 合并development分支:
git merge development - 解决冲突后提交并推送:
git add .→git commit -m "Merge development into preproduction"→git push origin preproduction
- 切换到preproduction分支:
从preproduction合并到production:
重复上述步骤,替换目标分支为production即可:git checkout production→git pull origin production→git merge preproduction→ 处理冲突→提交推送
团队协作推荐用Pull Request
- 在代码托管平台上,从
development分支创建PR到preproduction,等待审批通过后完成合并 - 合并完成后,再从
preproduction创建PR到production,审批后完成合并 - 这种方式能保留完整的审批记录,更适配团队规范流程
二、识别已删除feature分支对应的文件
已删除的分支可通过Git的历史记录找回相关文件,步骤如下:
找回已删除分支的最后提交哈希
Git的reflog会记录所有本地分支操作(包括删除的分支),执行命令:git reflog | grep "feature/你的分支名称"
从输出中提取该分支最后一次提交的哈希值(例如abc1234)找到分支的分叉点
一般feature分支从development切出,执行命令获取分叉点哈希:git merge-base development abc1234
得到分叉点哈希(例如def5678)列出分支的所有文件变更
对比分叉点和分支最后提交的差异,就能定位该分支涉及的文件:- 所有变更的文件:
git diff def5678 abc1234 --name-only - 仅新增的文件:
git diff def5678 abc1234 --name-only --diff-filter=A - 仅删除的文件:
git diff def5678 abc1234 --name-only --diff-filter=D - 仅修改的文件:
git diff def5678 abc1234 --name-only --diff-filter=M
- 所有变更的文件:
分支刚删除的快捷方式
若远程还残留该分支,先拉取:git fetch origin feature/你的分支名称,直接查看分支文件即可。若远程已删除,执行git fetch --prune清理本地无效远程分支,再用reflog方法。
内容的提问来源于stack exchange,提问作者Wisconsin Wes

