Git - 将分支移植到当前 HEAD 下面的 master 上(分支是从 HEAD 下面的 master 创建的)

Git - graft branch onto master below current HEAD (branch was created from master below HEAD)

我在 HEAD~5 从 master 创建了一个功能分支。

我提交了对分支的更改,现在对分支的内容感到满意(并且我不希望在我创建分支的地方之外对主控所做的提交中包含的更改)。

这就是我得到的。


master   A-B-C-D-E-F-G-H-I
               \
feature          J-K-L-M-N-O-P-Q-R

所以我想做的是丢弃最后三个提交到 master,然后将提交添加到功能分支,这样我就可以得到这个

master   A-B-C-D-J-K-L-M-N-O-P-Q-R

在创建分支之前,所有主提交都被推送到远程仓库。我是唯一与本地和远程存储库交互的人。


健康警告

对于阅读此问题并考虑使用建议的任何人,请务必阅读所有评论,因为我有一个非常特殊的情况,可能不一定是您的情况。

对存储库所做的更改不是您可以轻松返回的更改,如果有多个本地存储库在使用,那么其他本地存储库就会变得很奇怪。

在这种情况下,您可以简单地将 master 重置为 feature 分支:

git checkout master
git reset --hard feature

但是,上述解决方案重写了 master 分支的历史记录,如果此分支由除您以外的任何人共享,则应避免使用。