git只在指定范围内使用

  • 本文关键字:范围内 git git
  • 更新时间 :
  • 英文 :


我有一个分支,有几个提交,例如:

commit40
commit39
commit38
...
commit02
commit01

我怎么能做一个新的分支使用前一个与一系列提交?比如since commit 38 to 40

您可以使用择优技术。https://www.atlassian.com/git/tutorials/cherry-pick

  1. 从commit37签出一个新的分支

    git checkout -b <& lt; commit37>

  2. 删除所有内容,并提交。

    rf -rm ./*;Git添加。;git commit -m "cleanup";

  3. 从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或者选择一个范围)。

最新更新