版本控制-Git并在多个分支上工作

我有几个Git分支:“实验”,“某物”和“大师”。

我切换到“实验”分支。 我注意到一个与“实验”无关的错误,该错误属于“某些”方面的更改。 我该如何解决?

我在想我应该切换到“某物”,修复错误,提交,然后再回到“实验性”。 我应该如何从“某物”中获取较小的更改并将其应用于“主”和“实验性”,以便当我切换到这些分支时不必再次重新修复该错误?

Gav asked 2020-08-12T01:06:52Z
6个解决方案
54 votes

您可以使用两种尚未提及的解决方案:使用主题分支或使用摘樱桃。


主题分支解决方案

在主题分支解决方案中,您切换到分支``某物'',创建一个分支来修复错误,例如 'something-bugfix',将此分支合并为'something'(修复错误),然后将该分支合并为'experimental'。

$ 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]

另请参阅及早解决主题分支之间的冲突/依赖性和从不合并,以及也可能提交给Junio C Hamano(git维护者)撰写不同的分支博客文章。


挑选错误修正

如果您稍后发现创建的错误修正(例如在开发分支上)也将在其他分支(例如稳定分支)上使用,则采用选择樱桃的解决方案很有用。 在您的情况下,您可以承诺对“某物”分支进行修复:

$ git checkout something
[edit, edit, edit]
$ git commit
$ git checkout experimental

然后您注意到,您在“某物”分支中提交的修复程序也应该在“ experimenta”分支中。 可以说这个错误修正是提交'A'(例如,如果您没有在'something'之上提交任何东西,则可能是'something〜2'或'c84fb911'):

$ git checkout experimental
$ git cherry-pick A

(如果要在提交经过精心挑选的bugfix之前编辑提交消息,可以使用--edit选项来添加cherry-pick)。

Jakub Narębski answered 2020-08-12T01:07:30Z
5 votes

你可以:

  • merge somethingcommitexperimental分支上进行的更改
  • merge something
  • (可选)merge something查找错误
  • merge something的变化
  • merge something

然后:

  • merge something如果您想要一个干净的提交图(如果您公开此存储库,并且对此有所关注)

要么:

  • merge something如果您不关心“演示” :)
Carmine Paolino answered 2020-08-12T01:08:21Z
2 votes

由于您的实验分支具有某些功能,因此您应该执行以下一项操作:

  • 在此修复错误后,将某些内容合并为实验性内容。
  • 在某些基础上重新进行实验
Vitaly Kushner answered 2020-08-12T01:08:50Z
0 votes

如果您在'master'方面的进展不大,只需切换回实验版并执行'git merge master'。 如果您这样做,我认为'git cherry-pick'命令就是您的朋友。

ondra answered 2020-08-12T01:09:10Z
0 votes

您的分支与此相关,如下所示:

主人>东西>实验

这是,如果您确实打算将某些内容合并到master中。

如果可能,我将其修复在master之上,然后将其他基础重新置于master之上。 但是我只是喜欢重新基地。 或者您可以在那里修复它,然后完全像那样合并

主人>东西>实验

但是如果某事只是一个简单的主题分支,那我就不会这样做。 在这里听起来像是您的“下一个硕士候选人”

u0b34a0f6ae answered 2020-08-12T01:09:52Z
0 votes

如果可以合并,请合并。 如果您不想将某些内容合并到其他分支中,请修复提交到其他每个分支中的错误和选择。

William Pursell answered 2020-08-12T01:10:13Z
translate from https://stackoverflow.com:/questions/1334027/git-and-working-on-multiple-branches