[英]Obtain a git repository's tree elsewhere via --work-tree while keeping --git-dir repository unmodified
在/orig-git
命令下给出一个检出的存储库
git --git-dir=/orig-git/.git --work-tree=/copy checkout -f REV
导致/copy/
中的签出树表示REV
的状态,但也修改/orig-git
存储库以指向REV
(同时保持文件本身不变)。 是否可以在/copy
获取修订版REV
的/copy
但不通过clone,fetch或只是简单地复制此.git存储库来复制/orig-git/.git
的信息?
基本上我想做一个关于git repo信息的只读操作,但仍然在别处修改/写出checkout out树。
看起来最简单的选择就是克隆存储库:
git clone -l /orig/git /copy
现在您拥有了一个可以根据需要修改的存储库副本,而不会影响原始存储库。 如果你真的想用/copy
的更改来更新原始/copy
,那么如果/orig
配置正确,你可以git push
它们git push
回去。
如果您担心拥有存储库的第二个副本所使用的空间,则-l
标志意味着尽可能“.git / objects /目录下的文件被硬链接以在可能的情况下节省空间”(来自git-clone(1)
)。
直接从git-archive
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)
创建一个tar存档,其中包含当前分支上最新提交的内容,并将其解压缩到
/var/tmp/junk
目录中。
只需将HEAD
替换为您感兴趣的提交( REV
)即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.