Git 我应该如何安排从主分支合并到我的功能分支,并在我的功能分支上提交我自己的工作?

Git 我应该如何安排从主分支合并到我的功能分支,并在我的功能分支上提交我自己的工作?,git,git-merge,Git,Git Merge,当试图使我的功能分支与主分支保持最新时,我必须不时地将主分支合并到我的功能分支 如果这样的合并成功,它将在功能分支上创建一个新的提交,这是否正确 如果这样的合并失败,我将不得不手动解决合并冲突。在这种情况下,进行包含两者的提交是一个好主意吗 我为解决合并冲突所做的更改 还有我在功能分支上做的一些工作 或者我应该将为解决合并冲突所做的更改与功能分支上的工作分离为不同的提交吗? 这对以后有影响吗 当我创建将功能分支合并到主分支的请求时,其他人对我自己在功能分支上的工作进行的代码审查 自我提醒自

当试图使我的功能分支与主分支保持最新时,我必须不时地将主分支合并到我的功能分支

如果这样的合并成功,它将在功能分支上创建一个新的提交,这是否正确

如果这样的合并失败,我将不得不手动解决合并冲突。在这种情况下,进行包含两者的提交是一个好主意吗

  • 我为解决合并冲突所做的更改
  • 还有我在功能分支上做的一些工作
或者我应该将为解决合并冲突所做的更改与功能分支上的工作分离为不同的提交吗? 这对以后有影响吗

  • 当我创建将功能分支合并到主分支的请求时,其他人对我自己在功能分支上的工作进行的代码审查
  • 自我提醒自己在功能分支上的工作
  • 我想在上面提到的其他事情

通常,我应该如何安排从主分支到我的功能分支的合并,以及在我的功能分支上提交我自己的工作?

确实,从
主分支到功能分支的合并通常会为合并生成新的提交。您可以为此规则设计一个例外,但或多或少只有在功能分支还没有任何提交的情况下。如果要绝对确保创建了提交,可以使用
no ff
选项进行合并

我的建议是在合并提交中放入尽可能少的更改。有几个相关的原因

首先,合并应该代表两条工作线的汇合点。合并提交消息通常类似于“将主机合并到某个功能中”;如果你做了额外的工作,你将需要一条提交消息,其中列出了你所做的不相关的事情,并且有可能——甚至有可能——在以后有人寻找你的更改时,这些消息会被遗漏

因此,合并提交的默认日志输出不包括补丁。你可以得到一个,但它是一个3路(或更多)补丁,更难阅读。因此,如果您希望能够轻松地检查您的更改,请不要将它们附加到合并中

接下来:接下来,您可能会想知道是什么变化引入了bug。一般来说,执行过多任务的过于复杂的提交会降低帮助您缩小范围的工具的有效性(如
对分
)。“从master合并打破了我的功能分支”可能与“我在功能中添加的最新工作打破了我的功能分支”有着非常不同的解决方案

还有一些情况下,git会假定合并只是一个合并。我主要考虑的是重设基础的操作,可能很少或永远不会出现通过这样的合并来重设基础的情况。但是如果您这样做了,并且合并包含不相关的更改,那么您将遇到不必要的问题


偶尔也会发生,您必须手动“重做”合并;同样,如果在合并中包含不相关的工作,这将更加困难。

的确,从
主功能
到功能分支的合并通常会为合并生成新的提交。您可以为此规则设计一个例外,但或多或少只有在功能分支还没有任何提交的情况下。如果要绝对确保创建了提交,可以使用
no ff
选项进行合并

我的建议是在合并提交中放入尽可能少的更改。有几个相关的原因

首先,合并应该代表两条工作线的汇合点。合并提交消息通常类似于“将主机合并到某个功能中”;如果你做了额外的工作,你将需要一条提交消息,其中列出了你所做的不相关的事情,并且有可能——甚至有可能——在以后有人寻找你的更改时,这些消息会被遗漏

因此,合并提交的默认日志输出不包括补丁。你可以得到一个,但它是一个3路(或更多)补丁,更难阅读。因此,如果您希望能够轻松地检查您的更改,请不要将它们附加到合并中

接下来:接下来,您可能会想知道是什么变化引入了bug。一般来说,执行过多任务的过于复杂的提交会降低帮助您缩小范围的工具的有效性(如
对分
)。“从master合并打破了我的功能分支”可能与“我在功能中添加的最新工作打破了我的功能分支”有着非常不同的解决方案

还有一些情况下,git会假定合并只是一个合并。我主要考虑的是重设基础的操作,可能很少或永远不会出现通过这样的合并来重设基础的情况。但是如果您这样做了,并且合并包含不相关的更改,那么您将遇到不必要的问题

偶尔也会发生,您必须手动“重做”合并;同样,如果在合并中包含不相关的工作,这会更困难