2013-03-06 21 views
4

我的來源是/home/user/Workspace/MyProject,並且git存儲庫在/home/user/Workspace/MyProject/.git簽出老提交到臨時目錄與git

現在我想得到一個較舊的提交,但得到它在/home/user/Workspace/MyProject_OldCommit,因爲我不想改變目錄MyProject中的任何東西。

回答

7
cd /home/user/Workspace 
git clone MyProject MyProject_OldCommit 
cd MyProject_OldCommit 
git checkout <old_sha1> 
+1

如果是暫時的,可以安全地推薦'git clone -s'。 – 2013-03-06 14:52:29

+0

'git clone -s'做什麼? – sashoalm 2013-03-06 14:53:24

+0

'-s'可能在這裏很安全,但對於臨時克隆來說,它也不太可能提供很多好處。它會導致克隆引用原始對象的目錄,而不是製作硬鏈接到對象。這意味着克隆後在原始文件中創建的對象也將避免在提取時被複制,但是如果從原始對象中刪除對象,將導致克隆中的主要問題。 – qqx 2013-03-06 15:01:34

2

運行這從/home/user/Workspace/MyProject

git archive <old-sha1> | tar -x -C ../MyProject_OldCommit 

這將創建提交一個新的副本,而整個git倉庫。