【问题标题】:How to get locally committed changes to be reapplied as a merge commit from a branch?如何将本地提交的更改重新应用为来自分支的合并提交?
【发布时间】:2021-09-24 15:48:32
【问题描述】:

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

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

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

在主人身上:

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

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

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

【问题讨论】:

    标签: git git-branch git-commit


    【解决方案1】:

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

    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
    

    你就完成了。

    【讨论】:

    • 从你开始时 master 所在的位置,而不是在你尝试失败的魔法之后。 :-) 如果您的后续问题是how?,请查看git reflog。从那里获取 master 的原始提示修订版的 id,并在 git merge --no-ff 步骤中使用该修订版而不是 master.... 无需去任何地方,无论您身在何处,都可以运行配方。跨度>
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-13
      • 2020-07-07
      • 2010-10-08
      • 2020-07-28
      • 2022-08-18
      • 1970-01-01
      • 2018-11-18
      相关资源
      最近更新 更多