使用git在两个位置跟踪文件片段

使用git在两个位置跟踪文件片段,git,split,Git,Split,我有这样的代码 void myfunc() { introduction(); while(condition()) { complex(); loop(); interior(); code(); } cleanup(); } 我希望将其复制为两个版本,即: void myfuncA() { introduction(); minorchangeA(); while(condition()) { complex

我有这样的代码

void myfunc()
{
  introduction();

  while(condition())
  {
    complex();
    loop();
    interior();
    code();
  }

  cleanup();
}
我希望将其复制为两个版本,即:

void myfuncA()
{
  introduction();
  minorchangeA();

  while(condition())
  {
    complex();
    loop();
    interior();
    code();
  }

  cleanup();
}

void myfuncB()
{
  introduction();
  minorchangeB();

  while(condition())
  {
    complex();
    modifiedB();
    loop();
    interior();
    code();
  }

  cleanup();
  extracleanupB();
}
git声称跟踪内容而不是文件,所以我需要告诉它这里有块对
myfuncA
myfuncB
都是通用的,这样当与
myfunc
的上游更改合并时,这些更改应该同时传播到
myfuncA
myfuncB
?如果是,怎么做


代码的编写可以使myfuncAB通过测试条件A或B在每一点上都做了正确的事情,但这可能会严重妨碍可读性或性能。

事实上,git是一个很棒的源代码管理系统,但它很少为您编程。

不要重复代码。这就是问题所在

git和任何人都不会为此帮助你

此外,您误解了git的作用:git跟踪文件内容,而不是块。无法告诉git某个文件中的某个或某个块是相同的。

git实际上跟踪内容。但无论如何,你应该强调的是音轨;-)它不产生任何内容。我没有要求它产生内容:-)我说我希望它能认识到我复制并粘贴了内容。不复制和粘贴代码是个好主意,但所有规则都可能有例外。这样的git特性不会立即违反DRY原则,因为“真相”只有一个来源。当对另一个进行
myfuncA
myfuncB
的某些修改时,会出现一个问题,因为它们现在是分开的,所以没有进行修改。谢谢你的反馈。