0

我有两个分支masterdebug。如果我尝试将调试合并到分支,它会快进。所以我使用以下命令来避免快进:

$ git merge --no-ff debug
Merge made by the 'recursive' strategy.
file.txt |  117 +++++++++++++++++++++++++++-----------------------------------
1 files changed, 51 insertions(+), 66 deletions(-)

这对我来说似乎仍然是快进。如何手动合并?由于 git 没有按照我想要的方式运行,我开始怀疑我使用 git 是否是错误的,或者我没有遵循其他开发人员所期望的做法。

我希望有一个包含所有调试选项、注释和打印语句的分支,并且实际上在代码上取得了进展。在调试分支中正常工作后,我想将它合并到分支,只是工作代码,而不是用于调试的额外信息。这是在 git 上进行版本控制的有效方法吗?

4

1 回答 1

1

在您的情况下,合并解析为快进,仅仅是因为在您合并时分支“master”完全包含在分支“debug”中——也就是说,因为没有分歧,所以根本没有什么要合并的。

现在的问题是:你想如何将你的调试分支合并到“master”中,这样​​它就不会收到不需要的代码块(那些调试打印输出语句等)?你已经为自己回答了吗?我的意思是,使用--no-ff是一种可行的方法(一些工作流程甚至建议始终使用它)但是为什么你不使用它——在提交之前--no-commit实际删除不需要的代码?

换句话说,在我看来,您出于某种原因认为这应该可行:

  1. 在您的“主”分支中有一个“原始”代码。
  2. 从“master”分叉一个“debug”分支。
  3. 在那里添加一些新代码,在那里添加一些调试代码。
  4. 将“调试”合并回“主”并期望此操作以某种方式仅将非调试代码带入。

显然,这是行不通的:Git 无法知道合并时哪些代码可以带入,哪些代码正在调试。

于 2013-06-15T18:22:39.710 回答