簡體   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