另一个项目的提交出现在我的项目图中

时间:2018-04-18 18:26:45

标签: git github

当我的git图显示此屏幕截图中的断开提交时,这是什么意思?

Weird git graph

为了使问题更加奇怪,屏幕截图下半部分的提交不属于我的项目。看看这些提交的来源,我可以看到它们来自我参与的开源项目,但它们来自我参与该开源项目之前。

我是否以某种方式管理从其他项目获取源代码到我自己的项目中?

关于如何清理这个烂摊子的任何提示?

我的项目在github,您可以看到"不受欢迎的"提交here

2 个答案:

答案 0 :(得分:1)

如果使用shell,则可以运行

git tag | grep -v 'v' | xargs git tag --delete

删除旧项目中保持分支活动的所有标记。然后,运行

git gc

垃圾收集无法访问的提交。

也应该在遥控器上采取类似的步骤。我不确定如何在Github中运行gc,但是要删除标签,你可以运行

git push --delete origin tagname

答案 1 :(得分:1)

git的核心是一个内容可寻址的文件系统&#34 ;;源控制命令建立在它之上。我的观点是,它比你对它所包含的内容更加灵活。

在这种情况下,很难从屏幕截图中确切地告诉100%,但听起来你的回购中有两张提交图。 git很好,有时也很有用。 (他们甚至可以在checkout上专门用于启动新提交图表的选项 - --orphan - 以及merge上的选项,以便将两个图表放在一起 - --allow-unrelated-histories。 )

那么,你有其他项目的代码吗?当然听起来像。它是怎么到达那里的?我不知道,但是你可以从其他回购中获取它,或者其他人可以将它推到你的原点,然后你在随后的获取中把它拿起来。

如何清理?好吧,您可以从删除任何指向不需要的提交的分支和/或标记开始。然后git最终希望能够自己清除提交内容。如果您需要强制进行更快速的清理,可以使用git gc在本地执行此操作(尽管您可能必须首先清除一些reflog)。在服务器上,它取决于托管软件提供的内务/ gc功能的访问级别(在这种情况下是github;我对这一事情并不太熟悉)。