如何初始化本地git存储库并告诉它它已经与服务器同步?

时间:2013-06-22 20:12:47

标签: git

听我说!

我有一个本地文件夹,其中包含最新版本的所有代码。相同版本的代码存在于远程git存储库的主分支中。现在我想在本地初始化git,但我不想再通过git pull下载所有代码。即使我在git init之后添加一个远程存储库并尝试获取,它似乎在决定它是同步之前下载所有内容。

代码中还有很多二进制文件。

这样做的主要原因是为了节省带宽。但也只是知道如何做到这一点。

我如何告诉git - “这已经与服务器中的最新版本保持同步(或者更好 - 服务器上的这个特殊版本 - 请接受我的话 - 只需稍后修改?”“

编辑:

说实话,服务器现在只有一个提交 - 现在我想要的就是例如

本地也做那个提交并告诉git服务器也有相同的提交(因为第一次提交时文件夹中的文件完全相同) - 显然git还不知道,因为不同的提交id是从服务器上的本地生成的。无论如何,在本地检查服务器上的内容后,我可以更改提交ID,这将解决我的问题。

如果可能的话,我正在寻找与上述类似或类似的东西。

我真的不想做“git clone”(并且现在再次通过git下载所有文件),甚至是一个浅层克隆。

EDIT2:

请注意,即使只提交一次,我的.git文件夹也是182 MB。这几乎是整个仓库的压缩大小 - 我担心这一切都会被重新下载(尽管本地已经存在相同的182 MB .git文件,可能只有提交ID不同)。

2 个答案:

答案 0 :(得分:5)

根据你的工作副本,你不能指望git工作!它需要大量元数据才能正常运行,包括项目历史。

你想要的是浅层克隆。这可以用

git clone --depth=1 git://some/repo

然而,浅层克隆存在许多重要的局限性。

  • 你无法推动他们
  • 你不能拉扯他们
  • 如果不下载更多
  • ,则无法参考项目历史记录

答案 1 :(得分:3)

我认为你误解了git是什么以及它是如何工作的。分布式版本控制系统的全部意义在于您可以在本地拥有存储库的整个历史记录。

那就是说,如果你真的想要这样做,你可以做一个“浅层克隆”:

git clone --depth <depth> <repository>

<depth>是您想要的历史修订数量。请注意,在尝试与其他存储库进行交互时,此克隆会非常破坏,因此您可能无法获得所需的行为。

git clone man page,大胆强调我的:

  

--depth <depth>   创建一个克隆,其历史记录被截断为指定的修订数。浅存储库有许多限制(您无法克隆或从中获取,也不能从中推送或插入),但如果您只对大型项目的近期历史记录感兴趣,那么它就足够了。历史悠久,并希望将修补程序作为补丁发送。

最后一个短语表示您唯一剩下的工作流程 - 生成补丁,然后将其应用到其他地方的完整存储库中。