如何仅合并分支上次git merge后的新commit,而非整个branch?
仅合并单个新Commit而非整个分支的实现方法
可以实现只合并上次merge后的那个单独commit,不需要合并整个分支,具体操作如下:
方式一:直接用git cherry-pick挑取目标Commit
- 切换到你要合并进去的目标分支(比如主分支
main):git checkout main - 拉取目标分支的最新代码:
git pull origin main - 找到那个新commit的哈希值(用
git log --oneline查看,或者从Git平台的commit记录里复制) - 执行cherry-pick把这个commit应用到目标分支:
git cherry-pick <你的commit哈希值> - 如果遇到冲突,手动解决后执行:
要是不想继续操作,就用git add . git cherry-pick --continuegit cherry-pick --abort放弃 - 最后推送到远程目标分支:
git push origin main
方式二:新建临时分支提PR(更安全)
如果不想直接操作主分支,推荐用这个方法:
- 从最新的目标分支新建临时分支:
git checkout -b temp-new-commit main git pull origin main - 把目标commit挑到临时分支:
git cherry-pick <你的commit哈希值> - 解决冲突完成cherry-pick后,推送到远程:
git push origin temp-new-commit - 用这个临时分支向目标分支提交PR,PR里只会包含你要的那个新commit,不会带之前已经合并过的内容。
关于之前的PR冲突问题
你的开发分支里保留了之前已经合并过的commit记录,Git会默认认为整个分支的所有提交都需要合并,所以会触发冲突(本质是重复合并导致的伪冲突)。用cherry-pick只提取单个新commit,就能避开这个问题。
内容的提问来源于stack exchange,提问作者Nourless
相关产品推荐
相关产品推荐

