【发布时间】:2017-02-09 18:01:46
【问题描述】:
我们有一个 PR 一切都好,除了 1 次提交,是否可以只合并除特定提交之外的所有内容?
【问题讨论】:
-
恢复分支中的提交,然后进行合并。适合你吗?
-
另一种选择是拒绝 PR 并在没有提交的情况下请求新的 PR。
标签: git bitbucket pull-request
我们有一个 PR 一切都好,除了 1 次提交,是否可以只合并除特定提交之外的所有内容?
【问题讨论】:
标签: git bitbucket pull-request
如果你想跳过的提交是分支中的最后一个提交,你可以合并它的父提交。
branch ... A --- B --- C
/ \
master ... O ... git merge branch^
如果不是,您可以git cherry-pick 每次提交,除了错误的提交。一个快捷方式是使用git rebase -i 并删除您不想要的行。
branch ... A --- B --- C
/
master ... O ...
$ git rebase -i master branch
(inside editor)
pick 0123456789 A (delete this line)
pick 3456789abc B
pick 6789abcdef C
(save and exit)
branch ... B' --- C'
/
master ... O ...
你也可以合并然后恢复提交。
$ git merge branch
$ git revert A
branch ... A --- B --- C
/ \
master ... O ... merge --- ∀
或者在分支中revert然后合并。
$ git checkout branch
$ git revert A
$ git checkout master
$ git merge branch
branch ... A --- B --- C --- ∀
/ \
master ... O ... merge
【讨论】:
您可以合并工作树中的分支,并在提交之前还原不需要的提交。
git merge --no-commit branchgit revert --no-commit unwanted_commitgit commit -m "Merged branch @987654327 @unwanted_commit)"
【讨论】: