假设我有一个 git
存储库位于有限的磁盘分区(例如拇指驱动器)上。
假设我上次推送该存储库失败,因为当前分区已完全填满。
假设我尝试使用 git gc
回收一些空间;然后git gc
也会失败:
$ git gc --prune=now
fatal: failed to write ref-pack file: No space left on device
error: failed to run pack-refs
现在,在同一台机器上,我有另一个分区,它有足够的空间;我知道我可以在那里克隆这个存储库,然后运行 gc
在那里,然后将存储库从另一个分区复制回/写入到第一个分区。
但我想知道:有没有办法,我可以指示 git
当我调用 git gc
时,将“另一个分区”用于需要写入的任何临时文件在原始分区上的存储库中 - 操作完成后,git
会删除“另一个分区”上的临时文件;它会修改/删除/添加“原始分区”存储库中的所有必需文件(如果可能的话,会影响空间回收)?
最佳答案
唯一的选择是将 .git
目录移动到其他位置,然后使用 --git-dir
选项来使用该位置,而不是自动计算它从当前工作目录中退出。除此之外,不,Git 将无法暂时使用不同的驱动器。
如果你仔细想想,数据损坏的风险太大了,不允许 Git 首先压缩另一个驱动器上数据库中的对象,然后删除源对象,最后将压缩的数据移回原处。
所以我想说这是一个通常没有人遇到的边缘用例。如今的拇指驱动器足够大,这也不会轻易成为问题。
关于git - 使用另一个分区进行临时 git 操作 (git gc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681296/