Git 非顺序Cherry-Pick提交:代码修改是否会被覆盖?
问题解答
两者的修改会合并保留。
原因很直接:Commit A和Commit B改动的是文件的不同区域,Git在执行cherry-pick操作时,会自动识别这两个提交的改动没有重叠冲突,因此会把两个提交的修改都完整应用到发布分支上,不会出现Commit B的修改被Commit A覆盖删除的情况。
举个直观的例子:
假设原文件内容是:
1. 初始文本行 2. 初始文本行 3. 初始文本行
- Commit A把第2行改成「A修改后的内容」
- Commit B把第3行改成「B修改后的内容」
先将Commit B cherry-pick到发布分支后,发布分支的第3行是B的修改;再cherry-pick Commit A时,Git会直接把第2行的改动加上,最终文件同时保留A和B的修改结果,不会互相覆盖。
只有当两个提交修改的是文件的同一区域(比如同一行或重叠的代码块)时,cherry-pick才会触发冲突,需要手动解决冲突后完成操作。
内容的提问来源于stack exchange,提问作者K. Ventura
相关产品推荐
相关产品推荐

