【问题标题】:Create new branch with all commits after a specific commit在特定提交后创建包含所有提交的新分支
【发布时间】:2017-12-02 15:56:09
【问题描述】:

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

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

同样,一旦完成,如何更改现有分支,使 commit-x 成为该分支上的最后一次提交

谢谢。

编辑

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

【问题讨论】:

  • 你可以获取提交的sha代码并使用 git checkout shacommit -b newbranch
  • 寻找类似的东西? stackoverflow.com/questions/2816715/…
  • @André 类似是的,就像我说的,我看到了那些。但是当我这样做时,是否会将该提交之后的所有提交复制到新分支?这就是我想做的事
  • 你的主分支有那些提交吗?
  • 不,这是我一直在开发的一个单独的分支

标签: git github


【解决方案1】:

对于您的原始问题

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

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

(或)

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

对于您的编辑问题

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

然后转到旧分支

git branch -m old_branch release_y

【讨论】:

  • 如果我只是从oldbranch 创建newbranch 然后在oldbranch 上恢复为commit-x。那会做同样的事情吗?
  • 是的。但理想情况下,原始分支完好无损,因此如果出现问题,您仍然可以再次尝试相同的事情
猜你喜欢
  • 2018-05-03
  • 2015-03-30
  • 2015-02-03
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2011-08-20
  • 2019-04-28
相关资源
最近更新 更多