如何验证git exile的工作原理?

Rom*_*man 7 git

我尝试使用git exile.这是我通常采取的一系列行动:

  1. 将大文件复制到存储库(由此我用"新"内容替换文件的"旧"内容).
  2. git add(我想我们不会将二进制文件复制到"临时区域"/"索引",因为存储库是"放逐".而不是"暂存区域"只会获得"巨大"内容的链接.)
  3. git exile push(我不知道它是做什么的.)
  4. git commit

我的期望是,在此操作之后,"巨大"文件的内容将被复制到驱动器,并且这些文件的原始内容(在本地存储库中)将被其到驱动器上的位置的链接替换.但是,出于某种原因,我无法明确验证它.我的存储库中仍然有大量的二进制文件(至少它是我看到的lsdu命令,或者当我用较少的文件打开文件时).

也许我的解释是错误的.也许"链接"仅存在于"临时区域"而不存在于"工作树"/"文件系统"中.

我基本上想要的是两种状态之间的切换:(1)一些文件包含原始的巨大内容,(2)文件包含复制到驱动器的巨大内容的链接.

换句话说,当我克隆(或拉动)存储库时,我在某些文件中看到"链接"(而不是实际的二进制内容).然后我用巨大的"二进制内容"替换这些链接.执行上面描述的命令序列("git add"+"git exile push"+"git commit"),结果,我的工作树中仍然有巨大的二进制文件.但是现在我想将本地存储库推送到远程存储库并且我不想推送二进制文件,我想推送新的链接.我拉链接,我想推送链接.我怎样才能实现它?

小智 1

链接 1:git-exile github 上的文档可能很有趣:

https://github.com/patstam/git-exile

链接2:查看这篇文章的机制:

“git推送”和“git流放推送”有什么区别?

也许可以澄清您的一些问题:

替换实际上发生在git add time(参见链接 2)

当您使用git exile push

当您将文件添加到 git 时,git-exile 将真实内容存储在 .git/exile 文件夹中,并在需要时使用其中的数据以静默方式将引用替换为真实文件内容。

当你推时:

这将在当前目录和所有子目录中查找放逐的文件,并将当前版本对应的对象推送到远程存储库。

您似乎有不止一个问题,也许与 git exile 的整体逻辑/理解有关。我建议查看该机制的这两个链接:)但是,我希望这会有所帮助!