【问题标题】:How to move git commits from master to a different existing branch [duplicate]如何将 git 提交从 master 移动到不同的现有分支 [重复]
【发布时间】:2013-02-20 12:48:19
【问题描述】:

我签入了一些对master 的提交,这些提交应该被签入develop。我使用什么 git 命令从 master 分支中删除这些提交并包含在开发分支中?

【问题讨论】:

  • 你看过这个答案吗? - stackoverflow.com/questions/1773731/…
  • 看看这个:[move-recent-commit-to-a-new-branch][1] [1]:stackoverflow.com/questions/1628563/…
  • 因为顶部有一个“这个问题可能已经有答案”块,只是想指出我的问题不是关于移动到 new 分支,而是关于移动到不同的现有分支
  • @gitq:请参阅 Dan Hoerst 的问题以获取解决方案。这称为樱桃采摘,适用于现有分支。

标签: git branch


【解决方案1】:

如果我没记错的话,你有两个同步的分支, masterdev,干脆忘了切换分支, 在提交之前。

如果是这样,我们有:

----------------
git log in dev

xxx
yyy
...
----------------

和:

----------------
git log in master

ccc
bbb
aaa
        <---- here you forgot to switch branch
xxx
yyy
...
----------------

解决办法是:

首先,确保:

git status -s

返回空结果。

接下来,将所有新的提交从master 获取到dev

git checkout dev
git merge master

现在回复你master:

git checkout master

删除不必要的提交:

git reset --hard HEAD~3

数字~3 是您要删除的提交数。

记住:git status -s 必须返回空结果。 否则git reset --hard会导致数据丢失。

【讨论】:

    【解决方案2】:

    在 git 中通常有几种方法可以做同样的事情一种可能的方式:

    git checkout develop
    git cherry-pick XXX // XXX being the sha1 of the commit you want to grab
    git checkout master
    git rebase --interactive HEAD~IDX // IDX being the position of the last "good" commit compared to HEAD
    

    最后一条命令将显示从 HEAD 到最后一次良好提交的所有评论,您所要做的就是删除提交的行以移动到分支开发

    【讨论】:

      【解决方案3】:

      为了应对另一个分支,您可以使用樱桃采摘:

      git cherry-pick <commit>
      

      删除不是那么容易。您可以使用 rebase 和 squash 或编辑提交:

      git rebase -i <commit>~1
      

      但我不确定在变基期间选择编辑时是否也可以编辑文件而不是仅提交消息。

      【讨论】:

      • edit 在交互式变基期间允许您编辑提交消息和文件,reword 仅允许您修改提交消息。
      • 在此之后,我的头在此提交时分离。我应该如何进行这些更改以反映远程分支?
      【解决方案4】:

      您可以将cherry-pick 提交到develop,然后以交互方式rebase 您的master 分支:

      1. git checkout develop
      2. git cherry-pick aabbcc
      3. git cherry-pick ddeeff
      4. ....
      5. git checkout master
      6. git rebase 123456 -i

      123456 是在你犯错之前的提交。这将打开一个编辑器,显示每个受变基影响的提交。删除与您要丢弃的提交对应的行并退出编辑器。

      【讨论】:

      • 最佳答案,谢谢
      猜你喜欢
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2014-10-18
      • 2014-07-01
      • 1970-01-01
      相关资源
      最近更新 更多