如何让本地提交的更改作为分支的合并提交重新应用?

问题描述

我正在处理一个本地 git 存储库,该存储库尚未配置远程存储库。我不小心在本地 master 分支上开始了我的所有工作。

到目前为止有 22 次提交,除了前两次提交,我希望所有 >=3rd 的提交被“移动”到一个新分支,然后合并回 master 以便日志显示“合并提交"代替。

我试过了,但似乎没有用:

在母版上:

$ git branch new_branch    
$ git reset HEAD~20 
$ git add . && git stash
$ git merge --squash new_branch
$ git commit
   

这确实让我得到了一个压缩的合并提交,我现在在我的主人上只看到 3 个提交。但是,如果我执行 git log --merges,它不会输出任何内容

如何为 new_branch 中的代码创建一个“真正的合并提交”,它可以被 git log --merges 检测到,并且如果我要运行:git rev-list <merge-commit-id>^..<merge-commit-id> 会列出所有提交?>

解决方法

假设您回到问题开始的地方,您可以这样做:

git checkout id-of-second-revision
git merge --no-ff master -m "use a proper comment"
git branch -f master # place master on this revision
git checkout master

大功告成。

,

git merge --no-ff new_branch 而不是 git merge --squash new_branch