我有一个分支,有几个提交,例如:
commit40
commit39
commit38
...
commit02
commit01
我怎么能做一个新的分支使用前一个与一系列提交?比如since commit 38 to 40
您可以使用择优技术。https://www.atlassian.com/git/tutorials/cherry-pick
-
从commit37签出一个新的分支
git checkout -b <& lt; commit37>
-
删除所有内容,并提交。
rf -rm ./*;Git添加。;git commit -m "cleanup";
-
从38-40选择提交
git cherry-pick commit37..commit40
在cherry pick命令commit37中不包含。
基于OP的评论,其中包括以下句子:
存在"合并"在38和30之间(示例),添加了很多代码,我不需要在新的分支…
我认为最适合你的是有一个提交1-30次的分支,然后是38-40次。你可以做一个类似的过程,而不需要前面1-38的任何提交,但是,越接近你想要的状态越好,所以最好"跳过"。尽可能少的提交,以避免未来的冲突。考虑到这一点,下面是如何简单地忽略提交31-37:
git fetch
git switch -c new-branch <commit30>
git merge <commit37> --strategy=ours # this "skips" commits 31-37
git merge <commit40> -X theirs
将-X theirs
添加到最后一次合并减少了发生冲突的机会,但是如果添加或删除文件,以及编辑文件,您仍然可能会有冲突。至少你只需要使用它们一次,而不是每次提交一次(比如使用rebase或者选择一个范围)。