Git: 如何合并除commit之外的分支?
Git: How to merge a branch except a commit?
我们有一个 PR 一切正常,除了 1 次提交,是否可以合并除特定提交之外的所有内容?
如果你想跳过的提交是分支中的最后一个提交,你可以只合并它的父提交。
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 --- ∀
或者在分支中恢复然后合并。
$ git checkout branch
$ git revert A
$ git checkout master
$ git merge branch
branch ... A --- B --- C --- ∀
/ \
master ... O ... merge
您可以合并工作树中的分支,并在提交前还原不需要的提交。
git merge --no-commit
branch
git revert --no-commit
unwanted_commit
git commit -m "Merged
branch
(except
unwanted_commit
)"
我们有一个 PR 一切正常,除了 1 次提交,是否可以合并除特定提交之外的所有内容?
如果你想跳过的提交是分支中的最后一个提交,你可以只合并它的父提交。
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 --- ∀
或者在分支中恢复然后合并。
$ git checkout branch
$ git revert A
$ git checkout master
$ git merge branch
branch ... A --- B --- C --- ∀
/ \
master ... O ... merge
您可以合并工作树中的分支,并在提交前还原不需要的提交。
git merge --no-commit
branch
git revert --no-commit
unwanted_commit
git commit -m "Merged
branch
(except
unwanted_commit
)"