繁体   English   中英

通过--work-tree在别处获取git存储库的树,同时保持--git-dir存储库不被修改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM