Git先合并task2再合并task1会删除已有提交或代码吗?
结论
你的理解完全正确,先合并task2再合并task1的操作既不会删除task2新增的注册文件,也不会出现提交抵消、丢失的情况。
原理说明
从你提供的分支结构可以看出,task2是基于task1分支创建的,task2的提交历史天然包含task1的所有提交:
- 当你把
task2合并到master时,Git会把task1的2个提交、task2的2个提交一并同步到master,此时master已经包含了task1的所有变更 - 后续再合并
task1到master时,Git会自动识别到task1的所有提交都已经存在于master中,只会执行快进合并,不会修改任何现有文件内容,自然不可能删除task2新增的注册目录和文件。
原作者产生疑惑的原因
这个疑问大概率是混淆了分支的衍生关系:如果task1和task2是两个独立、同时从旧版master拉取的平行分支,且task1的提交包含删除对应目录的操作,先合task2再合task1才有可能出现文件丢失的情况,但你描述的场景完全不符合这个前提。
通用规避方案
- 开发有前置依赖的功能时,必须从对应的前置分支拉取新分支,不要直接从
master拉取,保证依赖关系在提交历史中明确可查 - 合并分支前执行
git log 目标分支..当前分支确认待合并的提交范围,避免意外合入不需要的变更 - 多分支并行开发时,定期用
git rebase 上游分支同步最新代码,保证分支提交历史线性清晰
内容的提问来源于stack exchange,提问作者Mugen
相关产品推荐
相关产品推荐

