新的 Git 分支,没有对先前提交的更改

Posted

技术标签:

【中文标题】新的 Git 分支,没有对先前提交的更改【英文标题】:New Git branch without changes from a previous commit 【发布时间】:2012-07-03 09:07:49 【问题描述】:

我当前的分支如下所示:

     D  
    /
H--A--B--C  

我试图弄清楚如何生成一个新的 git 分支,这将使新的 git repo 看起来像:

     D  
    /
H--A--B--C  
    \
     C  

这可能吗?我考虑过使用 reset 但这意味着 C 的更改也会丢失,因此请寻找替代方案。

【问题讨论】:

【参考方案1】:

好的,所以找到了一种方法。

我创建了一个带有 A 的新分支:

git branch new-branch <A sha1>

然后我使用cherry pick在新分支中将C与A合并:

git checkout new-branch
git cherry-pick <C sha1>

这使得 repo 有了我需要的分支。

【讨论】:

【参考方案2】:
    C                     A--D  
   /                     /
  A*--D                 H--A--B--C  
 /                       \
H--A--B--C                A--C
    (1)                     (2)

因为(1) 等价于(2),所以你可以只使用git checkout &lt;commit sha1 of A*&gt; -b your-new-branch

【讨论】:

那行不通,它只是创建了一个新分支,其中包含 A 中的提交,即与 git branch 相同 感谢您的回复,我目前正在研究樱桃采摘听起来可能会起作用

以上是关于新的 Git 分支,没有对先前提交的更改的主要内容,如果未能解决你的问题,请参考以下文章

Git撤消先前的合并,这会阻止差异

显示直接提交到分支的提交,忽略 Git 中的合并

显示先前git合并中涉及的提交

Git新手教程-撤销更改(七)

如何将本地未提交的更改合并到另一个 Git 分支?

基本 Git 工作流程:为啥我提取的分支中的代码尚未提交?