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

时间:2015-02-20 19:20:48

标签: git

/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树。

2 个答案:

答案 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)。