我的來源是/home/user/Workspace/MyProject
,並且git存儲庫在/home/user/Workspace/MyProject/.git
。簽出老提交到臨時目錄與git
現在我想得到一個較舊的提交,但得到它在/home/user/Workspace/MyProject_OldCommit
,因爲我不想改變目錄MyProject
中的任何東西。
我的來源是/home/user/Workspace/MyProject
,並且git存儲庫在/home/user/Workspace/MyProject/.git
。簽出老提交到臨時目錄與git
現在我想得到一個較舊的提交,但得到它在/home/user/Workspace/MyProject_OldCommit
,因爲我不想改變目錄MyProject
中的任何東西。
cd /home/user/Workspace
git clone MyProject MyProject_OldCommit
cd MyProject_OldCommit
git checkout <old_sha1>
運行這從/home/user/Workspace/MyProject
:
git archive <old-sha1> | tar -x -C ../MyProject_OldCommit
這將創建提交一個新的副本,而整個git倉庫。
如果是暫時的,可以安全地推薦'git clone -s'。 – 2013-03-06 14:52:29
'git clone -s'做什麼? – sashoalm 2013-03-06 14:53:24
'-s'可能在這裏很安全,但對於臨時克隆來說,它也不太可能提供很多好處。它會導致克隆引用原始對象的目錄,而不是製作硬鏈接到對象。這意味着克隆後在原始文件中創建的對象也將避免在提取時被複制,但是如果從原始對象中刪除對象,將導致克隆中的主要問題。 – qqx 2013-03-06 15:01:34