在/orig-git
命令
git --git-dir=/orig-git/.git --work-tree=/copy checkout -f REV
导致/copy/
中的签出树代表REV
处的状态,但也修改/orig-git
存储库以指向REV
(而文件本身保持不变)。是否可以在REV
中获取修订版/copy
的副本,但不通过克隆,获取或只是简单地复制此.git存储库来复制/orig-git/.git
中的信息?
基本上我想对git repo信息做一个只读操作,但仍然在其他地方修改/写出checkout out树。
答案 0 :(得分:2)
似乎最简单的选择就是克隆存储库:
git clone -l /orig/git /copy
现在您拥有了可以根据需要修改的存储库副本,而不会影响原始存储库。如果您确实希望使用/copy
的更改来更新原始文件,那么git push
如果/orig
配置正确,则可以-l
。
如果您担心拥有存储库的第二个副本所使用的空间,git-clone(1)
标志意味着只要有可能,.git / objects /目录下的#34;文件就会被硬链接以节省空间可能" (来自{{1}})。
答案 1 :(得分:1)
直接来自git-archive
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)
创建一个tar存档,其中包含当前分支上最新提交的内容,并将其解压缩到
/var/tmp/junk
目录中。
只需将HEAD
替换为您感兴趣的提交(REV
)。