Git 在特定提交之后创建包含所有提交的新分支

Git 在特定提交之后创建包含所有提交的新分支,git,github,Git,Github,我当时正在处理一个具有多个提交(Release-X)的git分支。现在,我被要求在特定提交(Release-Y)之后为所有提交创建一个新分支。我看到了关于使用特定提交创建新分支的问题(和答案)。但如果我这样做,它会将提交之后的所有提交复制到新分支吗 如何从一个特定的commit(比如commit-x)创建一个新分支,以便commit-x之后的所有提交都复制到这个新分支中 此外,一旦完成此操作,如何更改现有分支,以便commit-x是此分支上的最后一次提交 谢谢 编辑 从评论来看,我所需要的似乎是

我当时正在处理一个具有多个提交(Release-X)的git分支。现在,我被要求在特定提交(Release-Y)之后为所有提交创建一个新分支。我看到了关于使用特定提交创建新分支的问题(和答案)。但如果我这样做,它会将提交之后的所有提交复制到新分支吗

如何从一个特定的commit(比如commit-x)创建一个新分支,以便commit-x之后的所有提交都复制到这个新分支中

此外,一旦完成此操作,如何更改现有分支,以便commit-x是此分支上的最后一次提交

谢谢

编辑


从评论来看,我所需要的似乎是不可能的。是否可以将现有分支重命名为其他分支?在这种情况下,我可以使用该提交(Release-X1)创建一个新分支,并将现有分支重命名为Release-Y?

以回答您的原始问题

如果x之前和x之后的提交都在更改同一文件的文件历史记录,这就有点困难了。以下几点是一些你可以尝试的想法。但是你必须小心地合并它们

但是您可以尝试的是从原始分支创建新分支,将其还原为您想要的分支。然后从原始分支创建另一个分支,只需git在commit-x之前恢复提交,直到达到所需的提交或到达最后一个稳定分支

(或)

从原始分支创建一个本地分支(lb1),并将其重置为所需的sha提交。然后从master创建另一个本地(lb2),并仅合并从原始分支到(lb2)的提交

为您的编辑问题

是的,您可以重命名分支
git checkout-b Release-x1 old_branch
,将创建一个新的分支,您可以使用
git reset--hard shacommit
,回滚到该提交

然后转到旧分行

git branch -m old_branch release_y

您可以使用提交的sha代码并使用git checkout shacommit-b来寻找类似的东西@安德烈:是的,就像我说的,我看到了。但是当我这样做时,在提交到新分支之后,会复制所有提交吗?这就是我想做的,你的主分支有那些提交吗?不,这是我一直在处理的一个独立分支,如果我只是从
oldbranch
创建
newbranch
,然后在
oldbranch
上恢复到commit-x会怎么样。那会做同样的事情对吗?是的。但理想情况下,保持原始分支完好无损是件好事,因此,如果出现问题,您仍然可以再次尝试相同的事情