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

如何初始化本地git存储库并告诉它已经与服务器同步?,git,Git,听我说完 我有一个本地文件夹,其中包含所有最新版本的代码。同一版本的代码存在于远程git存储库的主分支中。现在我想在本地初始化git,但我不想再次通过git pull下载所有代码。即使我在git init之后添加一个远程存储库并尝试获取,它似乎在决定是否同步之前下载了所有内容 代码中还有很多二进制文件 这样做的主要原因是为了节省带宽。但也只是为了知道怎么做 我如何告诉git—“这已经与服务器上的最新版本同步了(或者更好—服务器上的这个特定版本—相信我的话—只接受以后的版本?)” 编辑: 老实说,

听我说完

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

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

这样做的主要原因是为了节省带宽。但也只是为了知道怎么做

我如何告诉git—“这已经与服务器上的最新版本同步了(或者更好—服务器上的这个特定版本—相信我的话—只接受以后的版本?)”

编辑: 老实说,服务器现在只有一个提交-现在我想要的是类似于for的东西

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

如果可能的话,我正在寻找类似的产品

我真的不想做“git克隆”(现在再次通过git下载所有文件),即使是浅克隆

编辑2:
请注意,即使只提交一次,我的.git文件夹的大小也是182 MB。这几乎是整个repo的压缩大小——我担心整个内容会再次被下载(即使本地已经存在相同的182 MB.git文件,可能只是提交id不同)

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

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

git克隆——深度
其中
是您想要的历史记录修订数。请注意,在尝试与其他存储库交互时,此克隆将被破坏,因此您可能无法获得所需的行为

我的重点如下:

--深度
创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入到它中)),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了


最后一句话指出了您唯一剩下的工作流程—生成补丁,然后将它们应用到其他位置的完整存储库中(如果您想推送)。

您不能指望git仅基于您的工作副本就可以工作!它需要大量元数据才能正常运行,包括项目历史记录

你想要的是一个肤浅的克隆人。这是可以接受的

git clone --depth=1 git://some/repo
然而,浅层克隆有许多重要的限制

  • 你不能推开他们
  • 你不能离开他们
  • 如果不下载更多,则无法引用项目历史记录

编辑问题以获取更多详细信息编辑问题以获取更多详细信息。不,您不能。这是一个特点。这意味着没有其他人(比如恶意的服务器所有者)可以在你不知道的情况下更改你的回购协议。但是,如果你听从loganfsmith的建议,应该避免重新加载大部分大文件,如果它们实际上没有更改的话。
git clone --depth=1 git://some/repo