使用commit --amend时,使子分支与父分支保持最新

Tho*_*mas 2 git

我目前的git仓库有三个分支:mainlinefeature_a,和feature_b。历史如下:

  1. mainline 是从远程仓库中克隆的
  2. feature_a 已从检出分支 mainline
  3. 进行更改feature_a并提交给commit_a
  4. feature_b 已从检出分支 feature_a
  5. 进行更改feature_b并提交给commit_b
  6. 已更改feature_a并修改为commit_a

如何feature_b使用修改后的更新来更新分支commit_a

Sco*_*don 5

您的历史记录可能看起来像这样:

           A' [feature_a]
          /
*--*--*--* [mainline]
          \
           A [original feature_a]
            \
             B [feature_b]
Run Code Online (Sandbox Code Playgroud)

提交A是您进行的原始提交feature_a。当您使用修改提交时git commit --amend,它创建了一个提交A'

您需要重新设置基础feature_b以将其附加到新提交A'。做:

git rebase --onto feature_a A feature_b
Run Code Online (Sandbox Code Playgroud)

(您也许也可以通过简单的操作来摆脱困境git rebase feature_a feature_b,但是由于您修改了commit,所以我不确定这将如何工作A。)

现在您的历史记录将如下所示:

             B' [feature_b]
            /
           A' [feature_a]
          /
*--*--*--* [mainline]
Run Code Online (Sandbox Code Playgroud)

从技术上讲AB它们仍在回购中,但是由于未使用它们,因此Git会在以后对其进行垃圾回收。