Git Rebase时如何保留feature分支单个文件修改并同步main分支?
解决方法
分两种场景处理:
场景1:rebase过程中遇到目标文件冲突
如果执行git rebase main时,git提示你要保留的文件存在冲突,按以下步骤操作:
- 保留feature_branch分支中该文件的修改:
git checkout --ours path/to/your/target-file - 标记该文件冲突已解决:
git add path/to/your/target-file - 继续完成rebase:
git rebase --continue
场景2:已完成rebase,但目标文件的修改被覆盖
如果已经完成rebase,发现要保留的文件被main分支的版本覆盖了,按以下步骤恢复:
- 恢复feature_branch在rebase前该文件的版本:
git show feature_branch@{1}:path/to/your/target-file > path/to/your/target-file - 将恢复的修改合并到rebase后的提交中(保持提交历史整洁):
git add path/to/your/target-file && git commit --amend --no-edit
补充说明
git checkout --ours:在rebase场景下,ours指代当前正在执行rebase的分支(即feature_branch),此命令会用feature_branch的版本覆盖冲突文件。feature_branch@{1}:表示feature_branch分支在最近一次变更(本次rebase)之前的状态,通过它可以获取到rebase前的文件版本。
内容的提问来源于stack exchange,提问作者pip
相关产品推荐
相关产品推荐

