git - 使用 commit --amend 时使子分支与父分支保持同步

标签 git

我当前的 Git 存储库有三个分支:mainlinefeature_afeature_b。历史如下:

  1. mainline 从远程仓库克隆
  2. feature_a 分支已从 mainline
  3. checkout
  4. feature_a 进行了更改并提交为 commit_a
  5. feature_b 分支已从 feature_a
  6. checkout
  7. feature_b 进行了更改并提交为 commit_b
  8. 更改了 feature_a 并修改为 commit_a

如何使用修改为 commit_a 的更改更新 feature_b 分支?

最佳答案

你的历史可能看起来像这样:

           A' [feature_a]
          /
*--*--*--* [mainline]
          \
           A [original feature_a]
            \
             B [feature_b]

提交 A 是您在 feature_a 上所做的原始提交。当您使用 git commit --amend 修改提交时,它会创建一个 提交,A'

您需要 rebase feature_b 以将其附加到新的提交 A'。做:

git rebase --onto feature_a A feature_b

(您可能也可以简单地执行 git rebase feature_a feature_b,但我不确定这将如何工作,因为您修改了提交 A.)

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

             B' [feature_b]
            /
           A' [feature_a]
          /
*--*--*--* [mainline]

从技术上讲,提交 AB 仍在 repo 协议(protocol)中,但由于它们未被使用,Git 稍后将对它们进行垃圾回收。

关于git - 使用 commit --amend 时使子分支与父分支保持同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988713/

相关文章:

git - 我的应用程序源代码在 heroku 上的安全性如何?

从 VPN 内的远程存储库进行 Git Checkout

git stash 无法应用保存的更改

git - Git 和 SourceTree 中的大写/小写差异

python - 使用 GitPython 和 https 凭证克隆 AWS CodeCommit git 存储库

git - 远程 : in git 旁边没有写任何内容

excel - 在 Git 上保存 Excel 文件的版本,以便以后手动协调差异

git gitlab laravel 不是所有的文件都添加了

git - 'origin' 似乎不是 git 存储库

compilation - 数组 '__curl_rule_01__' 的大小为负