【问题标题】:Change commits to another branch将提交更改到另一个分支
【发布时间】:2016-09-15 12:22:29
【问题描述】:

目前我有两个分支:Master 和 Dev。上周我在 Master 分支(分支错误)上提交了我的工作,现在我需要将这些提交更改到 DEV 分支(右分支),有什么更好的方法来做到这一点?

我在 MAC 上使用 github 桌面

干杯, 拉斐尔

【问题讨论】:

  • 您能否通过图表向我们展示Dev 和Master 分支之间的关系?

标签: git github branch commit


【解决方案1】:

您的问题不清楚。所以我假设你需要旧版本的 master,你需要新版本的 Dev。这意味着您将需要更改您的 git 历史记录。如果您已将这些提交推送到您的远程,这不是您应该做的,因为您不想弄乱 git 历史记录。

你所做的是cherry-pick来自 master 的提交,然后将你的 master 重置为提交之前。

在你这样做之前,你应该备份你的数据:

git checkout master
git checkout -b backup_master
git checkout DEV
git checkout -b backup_DEV

如何挑选樱桃: How to cherry-pick multiple commits

【讨论】:

    【解决方案2】:

    我的想法是使用补丁来避免可能的冲突。

    git checkout master
    git format-patch -1 HEAD (if thats all you want)
    git checkout dev
    git apply —check file.patch (check it first)
    git am < file.patch
    

    将 HEAD 替换为您想要的最旧提交的 SHA HASH,然后它将为每个当前提交创建一个 *.patch。然后以正确的顺序将它们单独应用到开发中。

    然后您可以再次签出 master,通过签出该 SHA 哈希更改为您不希望在 master 上的提交之前的提交。然后用一个好消息提交它。我认为这可能会做到。如果我误解了或者我是公然错误的人,请纠正我。

    【讨论】:

      【解决方案3】:

      如果您已将这些提交推送到远程,则无法从 MASTER 分支中删除提交。

      您可以做一件事,将最新的 MASTER 分支代码获取到 DEV 分支。

      为此: 备份你的 DEV 分支git checkout -b backup_DEV 然后:

      git checkout DEV
      
      git stash
      
      git rebase MASTER
      
      git push DEV 
      
      git stash pop
      

      现在您可以在 DEV 中看到该提交。

      【讨论】:

        猜你喜欢
        • 2016-06-04
        • 2013-06-08
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        • 2019-05-20
        • 2011-05-06
        • 2012-12-03
        • 1970-01-01
        相关资源
        最近更新 更多