我有一个主分支。这是生产代码。
每个'修补程序'必须从此分支开始
我是一个开发分支。这是'稳定下一个版本'的代码。
每个新功能必须从此分支开始,并且仅与此分支合并。
今天我犯了一个错误:我从开发修改了一个修补程序。
现在我真的需要对master分支应用相同的修改,但我无法合并新的修补程序分支,因为这将释放已经开发的每个新功能。
有没有办法......对不好的单词感到抱歉...从开发和修补程序中获取差异并将此修改应用于master?
这可能是所谓的'创建补丁'吗?
答案 0 :(得分:3)
如果您只处理少数提交,那么您可以cherrypick
提交到其他分支
git checkout master_branch
现在,确定添加到development_branch
并使用这些新提交的SHA(提交ID)的提交,只需要提交提交:
git cherry-pick <SHA>
如果您正在处理很多提交,并且没有保留原始提交消息,那么您可以按照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
这使得基于开发的修补程序分支的新“副本”移动到主分支,然后可以合并它。