【问题标题】:How I can remove an already merged branch and preserve date如何删除已合并的分支并保留日期
【发布时间】:2018-10-08 00:35:07
【问题描述】:

假设使用主线 A 和已经合并的分支 B 跟踪 git 历史。

                  b1     b2
             -----•------•---            B
            /                \
   •------•----•--------------•-------•  A
   a1     a2   a3             a4      a5   

a4 是一个带有提交消息合并“将 B 合并到 A 中”的合并提交。

是否可以将历史记录更改为以下内容。

                    b1'  b2'
   •-----•-----•-----•-----•-----•  A
   a1     a2   a3                a5  

编辑: 如果可能,我不想更改提交日期。

【问题讨论】:

  • 并非没有将a5 重写为新的不同提交。
  • 樱桃采摘 b1, b2 at a3
  • git rebase a2
  • @Daniel1147 afaik cherry pick 不会改变从中挑选的提交
  • git rebase a2 A 更好。 git rebase a2 如果您已经在分支 A 上,则可以使用。a3、b1、b2 和 a5 将被重写,而 a4 将被展平。

标签: git


【解决方案1】:

git cherry-pick 保存提交的日期

1) 去提交 a2 git checkout a2
2) 创建新分支 C git branch C
3) 转到新分支 C git checkout C
4) 从A分支获取git cherry-pick a3 b1 b2 a5
5)回到A git checkout A
6) 永久删除比提交 a2 git reset --hard a2更新的所有内容
7) 从分支 C 获取 git cherry-pick a3 b1 b2 a5
8) 好删除分支C,删除分支Cgit branch -D C

【讨论】:

  • 感谢提示它不能解决 a5 和 a3 的提交日期问题
  • 不适合大型仓库
  • 您希望在 a5 和 a3 中的哪个日期? (我的解决方案中的步骤以与图片 a1 a2 a3 b1 b2 a5 相同的顺序保存日期)
猜你喜欢
  • 2011-09-01
  • 2021-02-16
  • 2014-07-30
  • 2012-08-26
  • 2015-09-09
  • 1970-01-01
  • 2016-12-09
  • 2018-07-20
相关资源
最近更新 更多