Git:如何将相同的修改应用到另一个分支?

时间:2014-03-14 08:56:02

标签: git

我有一个主分支。这是生产代码。

每个'修补程序'必须从此分支开始

我是一个开发分支。这是'稳定下一个版本'的代码。

每个新功能必须从此分支开始,并且仅与此分支合并。

今天我犯了一个错误:我从开发修改了一个修补程序。

现在我真的需要对master分支应用相同的修改,但我无法合并新的修补程序分支,因为这将释放已经开发的每个新功能。

有没有办法......对不好的单词感到抱歉...从开发和修补程序中获取差异并将此修改应用于master?

这可能是所谓的'创建补丁'吗?

3 个答案:

答案 0 :(得分:3)

  1. 如果您只处理少数提交,那么您可以cherrypick提交到其他分支

    git checkout  master_branch
    

    现在,确定添加到development_branch并使用这些新提交的SHA(提交ID)的提交,只需要提交提交:

    git cherry-pick <SHA>
    
  2. 如果您正在处理很多提交,并且没有保留原始提交消息,那么您可以按照diff-patch方法进行操作:

     git diff master_branch..development_branch > patch
     git checkout  master_branch
     git apply --check fix_empty_poster.patch  // dry run your patch
     git am --signoff < patch
    

答案 1 :(得分:1)

您可以cherry-pick其分支中的修补程序:

git checkout master
git cherry-pick hotfix

答案 2 :(得分:0)

正如其他答案所示,如果只有一个(或几个)提交,那么cherry-pick工作正常。否则,您可以执行以下操作,将保留原始提交消息

git branch master_hotfix your_hotfix_branch
git rebase --onto master `git merge-base develop master_hotfix` master_hotfix
git checkout master
git merge master_hotfix

这使得基于开发的修补程序分支的新“副本”移动到主分支,然后可以合并它。