假设我在 master 中做了很多更改。但是,我想挑选所有不在 branch:release-5 中的内容。
问问题
4123 次
2 回答
5
你可以挑选,但如果你变基会容易得多:
git checkout -b missing-commits master
git rebase -i --author=me release-5
不会选择第 5 版中已经存在的所有提交,只有您的提交才会被选中。之后,您可以将缺少提交的分支合并到 release-5 中。
话虽如此,您可以使用cherry-pick:
git cherry-pick --skip-empty --cherry-pick --no-merges --right-only --topo-order --do-walk master...release-5
正如您所看到的,它更容易使用git rebase
,它可以为您挑选樱桃。
于 2014-05-10T09:15:29.417 回答
2
挑选樱桃的全部意义在于,您可以选择要复制到分支的特定提交子集。它是明确存在的,因为在某些情况下,您不想使用合并来集成来自另一个分支的所有提交。
现在,如果您发现自己处于想要挑选其他分支上的所有提交的情况,那么您正好处于合并情况,您只想将该分支合并到当前分支以集成所有更改:
git checkout release-5
git merge master
话虽如此,A..B
修订范围语法允许您指定可访问的提交,B
而没有可访问的提交A
。因此,在您的情况下,您可能希望用于release-5..master
选择所有已打开master
但无法从您的release-5
分支访问的提交:
git cherry-pick release-5..master
但是同样,如果您只想要所有这些,合并绝对是更好的选择,因为它不会重复提交并保持实际历史可用。
于 2014-05-09T17:18:11.307 回答