当我的git图显示此屏幕截图中的断开提交时,这是什么意思?
为了使问题更加奇怪,屏幕截图下半部分的提交不属于我的项目。看看这些提交的来源,我可以看到它们来自我参与的开源项目,但它们来自我参与该开源项目之前。
我是否以某种方式管理从其他项目获取源代码到我自己的项目中?
关于如何清理这个烂摊子的任何提示?
答案 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;我对这一事情并不太熟悉)。