如何将其他Fork的单个Commit合并到我的Fork(排除前后提交)
只合并特定Commit到自己的Fork仓库
Git命令操作
- 添加另一个Fork作为远程仓库:
git remote add other-fork <另一个Fork的仓库URL> - 拉取该仓库的提交记录(仅获取,不合并):
git fetch other-fork - 复制目标Commit的哈希值(可从对方仓库的提交页面获取),执行cherry-pick只引入该提交的更改:
git cherry-pick <目标Commit的哈希值> - 若出现冲突,手动解决文件冲突后,执行:
要是想放弃这次操作,执行:git add . git cherry-pick --continuegit cherry-pick --abort - 最后推送到自己的远程仓库:
git push origin <你的本地分支名>
SourceTree可视化操作
- 打开自己的仓库,点击顶部菜单栏「仓库」→「添加远程仓库」,输入另一个Fork的地址和自定义名称(比如
other-fork),确认添加。 - 点击顶部「拉取」按钮,在弹出的窗口中,远程仓库选择刚添加的
other-fork,勾选「仅获取(Fetch)」选项,点击「拉取」。 - 在左侧侧边栏的「远程」分组下找到
other-fork,展开后右键点击对应的分支,选择「查看提交」。 - 在提交列表里找到目标Commit,右键点击它,选择「Cherry pick...」。
- 在弹出的窗口中,确认要合并到的本地分支,点击「确定」。
- 若出现冲突,SourceTree会提示冲突文件,手动解决后点击界面上的「继续Cherry Pick」;如果要放弃操作,点击「中止Cherry Pick」。
- 完成后点击顶部「推送」按钮,将更改推送到自己的远程仓库。
补充说明
之前拉取时引入所有前置提交,是因为git pull本质是git fetch + git merge,会把对方分支的完整提交历史合并过来。而cherry-pick只会提取单个Commit的代码更改,不会带入其前后的提交记录。
内容的提问来源于stack exchange,提问作者OtakuGamer
相关产品推荐
相关产品推荐

