Gav*_*Gav 42 git version-control branch
我有几个Git分支:'实验','某事'和'主人'.
我切换到'实验'分支.我注意到一个与"实验"无关的错误,属于"某事"中的变化.我该如何解决?
我想我应该转向'某事',修复bug,提交然后再回到'实验'.我应该如何从'某些'中做出微小的改变并将其应用于'master'和'experimental',以便在切换到这些分支时我不必再次修复bug?
Jak*_*ski 54
您可以使用以下两种解决方案:使用主题分支或使用cherry-picking.
在主题分支解决方案中,您切换到分支'某事',创建一个分支来修复错误,例如'something-bugfix',将此分支合并为'某事'(修复错误),然后将此分支合并为'实验'.
$ git checkout -b something-fix something
[edit, commit]
$ git checkout something
$ git merge something-fix
$ git checkout experimental
$ git merge something-fix
[fix conflicts if necessary and commit]
Run Code Online (Sandbox Code Playgroud)
另请参见解决冲突/主题分支机构之间的依赖关系的早期和永不回合并,或许也是致力于不同的分支由JUNIOÇ滨野(GIT维护者)博客文章.
在樱桃采摘,如果你注意到的解决方案是非常有用后来是(在开发分支如)创建的bug修正将是对其他分支也很有用(例如稳定的分支).在你的情况下,你会修改'某事'分支:
$ git checkout something
[edit, edit, edit]
$ git commit
$ git checkout experimental
Run Code Online (Sandbox Code Playgroud)
然后你注意到你在"某事"分支中所做的修复也应该在'experimenta'分支上.让我们说这个错误修正是提交'A'(例如'某事',如果你没有在'某事'之上提交任何东西,但它可能是例如'某事〜2'或'c84fb911'):
$ git checkout experimental
$ git cherry-pick A
Run Code Online (Sandbox Code Playgroud)
(如果你想在编辑樱桃挑选的bug修改之前编辑提交消息,你可以使用git cherry-pick--edit
选项).
你可以:
stash
或者commit
您在experimental
分支机构上工作的更改checkout something
bisect
找到bugcommit
变化checkout experimental
然后:
rebase something
如果你想要一个干净的提交图(如果你暴露这个存储库,你关心它)要么:
merge something
如果你不关心'演示':) 归档时间: |
|
查看次数: |
19469 次 |
最近记录: |