合并git中的提交

时间:2010-08-18 12:50:50

标签: git github

我有一个包含数百次提交的git存储库。当我克隆它时,我得到了很多这样的输出:

... 得到了ac6d99d2762efe0fcf2b78656e336c25ca8428d5 得到了ef98d4e93c680384f8174b95e431627b29a56580 得到了4d6e1231e0f6265458a8e6ab47a44bfcd357486b 得到7e3d3a2fc10d0dfe00e87e8eed4a3fc1efa5eaed 步行b43c1e0062b72d3ab416ad209e94e13a6c71815d ...

这对应于每一次提交,这很烦人。有没有一种方法可以“合并”提交(不再需要它们),除了(明显)将HEAD导入新的存储库之外?

编辑:克隆cmd使用http方法完成。

2 个答案:

答案 0 :(得分:2)

如果您只遇到git clone的问题,可以尝试使用-q标志告诉它更安静。

如果要合并提交,请使用git rebase -i。用git的说法,将一个提交合并到另一个提交被称为“压缩”。请记住,这只会影响当前分支。如果提交存在于其他分支上,它们仍将存在于其他分支上。

答案 1 :(得分:2)

  

不再需要它们了

这是什么意思?无论好坏,任何给定存储库的HEAD提交都指向其父级,指向其父级,一直回到有史以来第一次提交。

  • git-clone的输出是否凌驾于屏幕上?您可以使用-q标志来避免这种情况,使其更安静。你也可以升级 - 在版本1.7.1中,除非我要求额外的详细程度(使用-vv),否则我不会得到长长的提交列表。

    chatty输出只发生在不复杂的HTTP协议中。使用git或ssh协议更有效,GitHub支持所有这些协议。另请阅读有关新Smart HTTP Transport

  • 的信息
  • 您是否习惯于集中VCS,其中工作副本只有最新版本?最好的等价物可能是使用git clone --depth=n创建的浅层克隆,其中 n 是您想要的历史记录。它有some limitations您应该阅读,但它只允许您克隆最近的历史记录,并仍然可以进行可以推迟的更改。

    顺便说一下,你没有保存尽可能多的空间,因为我选择了一个随机项目,当我只抓住最新的提交时,2.2MB的历史缩小到1.2MB。 Git的包非常节省空间。

  • 你真的想扔掉所有的历史吗? git中的一个重要教训是,对历史记录的任何修改都会使您的存储库与其来源不兼容 - 如果您重新压缩它们,或者丢弃所有历史记录并重新开始,您将无法与原始存储库进行通信。