可以使用 cherry-pick
来解决此问题,假设将基于某功能分支(feature-branch
)的修改移动到基于最新的 master 的新分支(feature2-branch
)上 :
- 确保你的本地仓库是最新的。首先切换到
master
分支并从远程拉取最新的更改:
git checkout master
git pull origin master
- 创建一个新的分支,这个新分支将基于
master
并且会包含来自feature-branch
的修改。你可以给这个新分支起一个有意义的名字,例如feature2-branch
:
git checkout -b feature2-branch
- 查看
feature-branch
的提交历史记录,找到你想要移动到master
的特定提交的哈希值。你可以通过以下命令查看提交历史:
git log feature-branch
这会显示一系列提交信息,包括每个提交的哈希值。
- 使用
git cherry-pick
命令来选取并应用特定的提交到新创建的分支feature2-branch
。用你之前找到的提交哈希替换<commit-hash>
:
git cherry-pick <commit-hash>
如果你需要选取多个连续的提交,可以使用范围选择:
git cherry-pick <start-commit-hash>^..<end-commit-hash>
- 如果在
cherry-pick
过程中遇到任何合并冲突,解决这些冲突后继续cherry-pick
过程。解决冲突后,标记文件为已解决状态,并完成cherry-pick
:
git add <resolved-file>
git cherry-pick --continue
- 一旦所有需要的提交都已被成功地挑选并应用到新分支上,你可以推送到远程仓库:
git push --set-upstream origin feature2-branch
这样,你就成功地将 feature-branch
上的特定修改移动到了基于 master
的新分支 feature2-branch
上。如果之后需要对这些修改进行进一步的工作或审查,可以在新分支上进行。