Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何停止每次获得额外的合并提交_Git_Github_Visual Studio Code_Azure Devops - Fatal编程技术网

Git 如何停止每次获得额外的合并提交

Git 如何停止每次获得额外的合并提交,git,github,visual-studio-code,azure-devops,Git,Github,Visual Studio Code,Azure Devops,我有一个项目,我是唯一的开发人员,有开发和主分支。每次我将development合并到master时,我都会得到一个额外的合并提交。我认为这是因为出于某种原因,它没有进行FF合并。但是develope和master分支中的代码是相同的。我将添加一个新特性来开发分支,通常是一次提交,然后在测试后将其合并到master。每次我得到这些额外的提交(这也使得开发分支看起来比主分支慢了15次提交) 我还有一些其他的项目,我也在以同样的方式运行,我不会在这些项目上得到额外的承诺。看来我对这个项目做了些什么,

我有一个项目,我是唯一的开发人员,有开发和主分支。每次我将development合并到master时,我都会得到一个额外的合并提交。我认为这是因为出于某种原因,它没有进行FF合并。但是develope和master分支中的代码是相同的。我将添加一个新特性来开发分支,通常是一次提交,然后在测试后将其合并到master。每次我得到这些额外的提交(这也使得开发分支看起来比主分支慢了15次提交)

我还有一些其他的项目,我也在以同样的方式运行,我不会在这些项目上得到额外的承诺。看来我对这个项目做了些什么,使它每次都创建这些额外的合并提交。知道如何停止这些额外的提交吗?我已经做了所有的事情,除了吹走开发分支,然后从当前的master重新创建它

还有一个问题,是否可以通过基本上删除合并提交而不挤压或删除附加提交来清理历史记录?我考虑过去掉主分支,然后从develope中重新创建它(因为它没有额外的提交),但我不确定这是个好主意

您需要使用该命令

如果希望分支的历史记录看起来是线性的,则需要执行以下操作:

  • 开发分支上的提交:
    git提交-m“Dev上的FeatureX”
  • 具有最新主控形状的重新基址:
    git获取原始主控形状:主控形状
    git重新基址主控形状
  • 测试你的代码
  • 高兴吗?将主机重新设置到开发上并强制推送:
    git签出主机
    git-Rebase-Development
    git-push-f
PS:
重设基础
是危险的,因为它会重写分支的历史记录(上面的步骤2和步骤4),除非:

  • 你很清楚自己在做什么
  • 没有其他人会重蹈覆辙
对两个人来说,你都应该是好人

特定于Azure Devops:

在Repo->committes下,如果单击过滤器图标并选择“第一个父对象”,它将自动隐藏合并。试试看Github是否有相同的功能

您需要使用该命令

如果希望分支的历史记录看起来是线性的,则需要执行以下操作:

  • 开发分支上的提交:
    git提交-m“Dev上的FeatureX”
  • 具有最新主控形状的重新基址:
    git获取原始主控形状:主控形状
    git重新基址主控形状
  • 测试你的代码
  • 高兴吗?将主机重新设置到开发上并强制推送:
    git签出主机
    git-Rebase-Development
    git-push-f
PS:
重设基础
是危险的,因为它会重写分支的历史记录(上面的步骤2和步骤4),除非:

  • 你很清楚自己在做什么
  • 没有其他人会重蹈覆辙
对两个人来说,你都应该是好人

特定于Azure Devops:

在Repo->committes下,如果单击过滤器图标并选择“第一个父对象”,它将自动隐藏合并。试试看Github是否有相同的功能


如果
develope
是基于
master
的,则只能快进
master
develope
(从提交
develope
点返回,应该可以到达提交
master
点到)

查看图片,很可能此时
master
指向
28b73893
,但
develope
仍位于
aeb743f1
。如果在
develope
中进行提交,则无法进行快进


要解决此问题,请将
master
合并回
develope
这将是一个快速转发合并。之后,
master
develope
将指向相同的提交;并且可以在一个分支中进行提交,然后快进另一个分支。

如果
develope
基于
master
(通过从提交
develope
指向返回,应该可以到达提交
master
指向)

查看图片,很可能此时
master
指向
28b73893
,但
develope
仍位于
aeb743f1
。如果在
develope
中进行提交,则无法快速前进


要解决这个问题,可以将
master
合并回
develope
这将是一个快进合并。之后,
master
develope
将指向同一个提交;并且可以在一个分支中进行提交,而在另一个分支中快进。

现在,甚至大的团队也在尝试使用se基于主干的开发。我很好奇为什么1-dev团队会有2个分支:)好的,在未来,我们可能会有一个完整的开发团队在整个企业中开发机器人。但我现在主要是想把事情弄清楚。我最初的想法是,我们将使用更像主干的开发分支,并通过PR的方式转到主分支。由于各种原因,我无法在本地进行一些测试,因此它有助于在不影响主分支的情况下部署到Azure。欢迎其他建议,@StanislavBashkyrtsev!你可以在谷歌上搜索基于主干的开发——有很多关于如何实现它的好文章。基本上你只有一个分支大师,就是这样。如果您还没有准备好,您可以创建短期的分支,将部分代码隐藏一两天,并从中生成PRs。如果您还没有准备好,您可以尝试在功能分支中工作(并在那里完成整个功能)。总体建议-只需保持