将git标签推入原始复制文件



按照这里的说明,我创建了一个本地带注释的标记,然后通过

将它推送到远程服务器
git push origin [tagname]

我很惊讶地看到输出的文件很大:

$ git push origin v1.5
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 204.56 MiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.com:schacon/simplegit.git
* [new tag]         v1.5 -> v1.5

我刚刚创建了存储库中所有内容的副本吗?也就是说,我创建的每个标签会占用服务器上约204 MB的空间吗?

标签只是一个指向特定提交的文件。204MB是存储库中的文件。您的推送大小取决于自上次推送以来更改的文件的大小。

因此,通过push,您创建了存储库中以前不在远程存储库中的所有内容的完整副本。通过创建一个标签,你创建了一个文件,其中包含一个提交的指针和一些元数据(即一个相当小的文件)。

如果你对git内部如何工作的更多细节感兴趣:文件存储见文档9.2章(你的200+MB),它们的引用方式见9.3章(当你创建一个标签时发生了什么)

不,您没有创建整个存储库的副本。

正如@Trudbert所说:

标签只是一个指向特定提交的文件,204MB是存储库的其余部分。所以你的push的大小取决于上次push之后的变化的大小。

标签只是一个指向提交的指针。如果提交已经在服务器中,那么它应该只有几千字节大。如果没有,提交也需要被推送,这就是为什么根据提交的大小,你的推送文件会很大。

相关内容

最新更新