2017-07-10 40 views
0

我仍在使用Git和Sourcetree,并且无法理解我的主分支是如何在我的当前分支中声明为主分支。Git Sourcetree Master 2 behind

当我试图合并到我的当前分支的主人说它是最新的。

enter image description here

任何人都可以向我解释我是怎么在这种情况下,更好的是,我怎么能得到主最新和工作的呢?

感谢

编辑:所以,我做了如下要求,结帐的主分支,拉着这似乎已完成了长达除了最后几次提交日期似乎已经消失了。有谁知道为什么?

enter image description here

+0

我不使用你特定的GUI,但它看起来像第一个图表显示你“分离头部”的情况。在这里,你所做的提交没有名字(当然,除了“HEAD”以外,没有其他名称)。您在切换分支时会改变头像,因此会忘记它们。要*记住*他们,给他们一个名字。 – torek

+0

是的,它确实说过一点。但我认为我正在对主人/来源进行检查。当我参与并且不再反对Master分支时,有点困惑。 –

回答

1

这意味着master是后面origin/master 2次的提交。您看到origin/master位于master提交之后的合并提交中;这是其中一个。另一个是在合并的“另一侧”(“设置捆绑...”)。

你如何到达这里是,有人推动变化为主(在其他分支合并的形式)。您已从origin获取更改 - 此时您的本地分支参考号origin/master已更新 - 但您尚未将它们合并(或将其拉入)master

您可以通过检出master并合并origin/master(而不是master)来更新master;或者通过在master上执行pull(假设以预期的方式设置跟踪,这可能是因为您获得预期的“2后面”消息)。还有其他方法,但那些对这种情况最有意义的方法。

UPDATE

看来,当你这样做,一些提交出现从您的显示消失。这很可能意味着您的显示器已设置为显示当前已检出内容的历史记录。 (这是运行git log的默认设置;我不确定SourceTree是如何确定显示内容的,因为我几乎全部使用命令行,从屏幕截图中可以看出,提交列表上方有一个下拉控件,可能会控制显示的内容。)

现在您想要小心一点,因为我看到您现在有“未提交的更改”。与提交(这很难真的丢失)不同,git没有做任何事情来保护您免于丢失这些未提交的更改。因此,在进行任何进一步结账之前,您应该确定您知道这些更改是什么以及是否应该保留。如果他们应该这样做,您应该在进一步签出之前提交或存储它们。 (在命令行中,git会拒绝做一个会丢失这些更改的结账;但是我不能说SourceTree会做什么)。

无论如何,像“修复注销Bug”一样的提交似乎已经在其他分支上创建;如果你检查分支,你应该看到这些提交。或者,如果您更改显示设置以显示该分支(或--all),您应该能够看到它们。

您可以使用推荐日志查看已经检出的历史记录。假设主要reflog中的第三项是你在问题中创建第一个截图时检出的内容(除非你已经完成了除了我所知的其他检出(或类似操作))。

+0

Hiya。感谢您的回复。不胜感激。所以我查看了Master,并做了一次pull,似乎已经恢复到了当时的状态,但现在所有提交Merge Branch User Login的提交都消失了。如果它们丢失,那很好,它们大多是测试提交。但很高兴知道这是为什么。 –

+0

他们没有离开。默认的'log'输出仅显示当前检出的内容的历史记录。所以我推断在你的问题的截图中,除了'master'以外,你还有其他东西被检出。如果你再次检查出来,那些提交会再次出现。 (请注意,当你有“任何”检出时,你*仍*看到'master'和'origin/master',因为它们在“无论”的历史中。) –

+0

啊好吧。那很好。那么现在我要结帐了?我无法签出我所在的分支,因为它说我已经签出并与Origin/Master保持同步。很抱歉,一旦我拥有了所有的工作,我会将其标记为正确的答案。 –