合并提交已在两个源分支上推送

时间:2019-07-12 12:11:27

标签: git

该项目发生了奇怪的事情。

  • 我们有一个分支“源”,从中我们创建了一个分支“功能”。
  • 我们检出分支“功能”并创建3个文件。
  • 然后,我们意识到分支“源”上缺少某些内容。因此,我们返回到它并编辑另一个文件。由于git不会跟踪新添加的文件,因此它们仍在项目中,但我们不提交它们。我们编辑我们提交的另一个文件。
  • 我们返回“功能”并将“源”合并为功能,然后进行推送。该功能是在遥控器上创建的。

我们不了解的是,最初的提交(包含三个文件的提交)现在也位于“源”分支中。

所有推送到源代码的git reflog

C:\path>git reflog show awsOrigin/source
  31325f0ea (awsOrigin/source) refs/remotes/awsOrigin/source@{0}: push: forced-update
  1921667a4 (source) refs/remotes/awsOrigin/source@{1}: push: forced-update
  8738f3c91 refs/remotes/awsOrigin/source@{2}: fetch: forced-update
  9c89b3654 refs/remotes/awsOrigin/source@{3}: fetch: forced-update

提交31325f0ea是将源合并到功能部件中时的提交。我不明白为什么将其推送到远程源上。提交1921667a4是我们只更改一个文件的提交。

“提交三个文件”的Git reflog显示3个分支:awsOrigin / source,awsOrigin / feature和local feature

可能会发生什么? 我们使用Eclipse的Git透视图进行提交和推送

---编辑

这是发生的情况的图形表示 enter image description here “初始化属性”是“三个文件提交” “通道版本10.0.0”是对某个文件进行了一次更改的文件,该文件是在源文件中进行的

git log --graph --oneline aws来源/来源 git log --graph --oneline awsOrigin/source

1 个答案:

答案 0 :(得分:1)

您添加的两个图形都被截断,以至于很难用它们做任何事情-图形中的图形缺少太多标签,因此没有上下文确定哪条线,而命令行中的某条截断了分支合并的关键时刻。

但是,我在命令行图上看到一些与您对您的同事认为他们所做的描述不符的事情:

  • 共享的父项8738未显示在图表的左侧。在命令行视图中,我希望紫色线成为“源”分支,但似乎会有一个额外的(黄色)分支。
  • e1211921从这时开始都分支。我们无法确定当时分支的名称,因为git不会记录。
  • 3132提交显示“源”已合并为“功能”,如所述。
  • 但是,下一个提交(截止)是另一个合并提交(青色线将遇到紫色)。
  • 图形视图看起来有些不同,但是大概是灰色线(也是在顶部再次切除)是同一合并。

如果图形视图中的灰线/文本视图中的紫色线是“另一个功能”,那么最终发生的事情是有人将“功能”合并为“另一个功能”。如果执行此合并的人认为他们是从“源”中拉出的,那么大概在这一点上,“源”和“功能”是指向同一提交

似乎发生了什么事,有人重置“源”分支以指向该提交;可能点击了错误的选项,并认为他们只是在结帐时切换了分支。这只是移动指针,所有分支都在git中。

由于git并不特别介意分支是在合并的左侧还是右侧(因此,可以有两个以上的父级)将“ source”指向该提交与执行合并相同反过来。即使您的客户端没有配置为始终强制使用,这也是一次有效的快进推送。