2011-03-24 80 views
4

到目前爲止,作爲項目中唯一的人員,我一直在複製/粘貼我的項目文件夾並將它們重命名爲版本控制方案(Ver1,Ver2,Ver3等)。 現在我試圖切換到Git。如何從git結賬

這就是我所做的:
我初始化了.git文件夾,並將第一個版本添加到Git存儲庫。 然後我將所有其他版本作爲提交添加到git存儲庫並對它們進行了標記。 所以現在我擁有主分支中的所有版本和標籤。我的問題是:
我怎樣才能(我不知道結帳是合適的詞)從Git倉庫抓取任何版本,並將其放入任意文件夾中,無需切換分支(或任何其他操作,Git可能會認爲它必須這樣做)?只需將Git中的版本(任何版本)複製到Git存儲庫和文件夾之間沒有任何連接的文件夾中?

回答

1

做:

git clone (path to your repo) 

,或者如果你不想讓git的元數據做:

git archive (branch) 
+0

是的,但我會得到整個回購,而不是我以後的版本/標籤。目前我檢出我需要的標籤(這就是爲什麼我標記了每個提交,所以我可以檢查它們),複製其他地方的工作文件夾(包含我之後的標籤),然後再次檢出主標籤,但是我不知道這是否正確 – donescamillo 2011-03-24 12:26:11

+0

您可以通過git歸檔標籤ID,它只會檢出樹的標籤版本。 – 2011-03-24 12:32:39

+1

您不需要標記提交以檢查它。你可以檢出提交。 – 2011-03-24 13:28:47

0

你的問題是:

我如何(我做不知道結賬 是否合適)從GIT倉庫抓取任何版本 ,並將其放入 一個任意的文件夾沒有切換 分支(或其他任何操作GIT 可能認爲它必須做)?

您想使用的git checkout命令:

git checkout myTag1.2.3 
git checkout asdf81274982shjsks 
git checkout origin/develop 

結賬的參數可以是一個分支,標籤或SHA1哈希。

你總是得到完整的存儲庫。你無法檢出它的一部分。請記住,git存儲完整存儲庫的快照。

2

通常你考察歷史版本直接在您的正常工作樹(你可以檢出任何承諾爲「分離的頭」 /「未命名的分支」)或間接查看歷史記錄與git log(尤其是-p選項),git blame,等等。

但是,如果你真的需要完全拆開舊的版本,你可以使用git archive命令創建一個特定的焦油檔案提交(標籤名,一個分支名(你會得到它的提交提交)或提交對象ID(即SHA-1哈希值)將用於指定提交)。您可以輕鬆地將存檔文件導入tar以將其解壓到任意位置。

從你的資料庫目錄:

git archive --format=tar branch-or-tag-name-or-commit-id | 
    (mkdir /path/to/destination && cd /path/to/destination && tar xf -) 

git archive將永遠爲本地資源庫的工作。它也可以通過--remote選項與非本地存儲庫(或不在當前工作目錄中的本地存儲庫)一起使用;並非所有的Git託管服務都可能允許提取存檔(他們可能不想花費CPU時間或帶寬)。


其實,你可以使用使用git archive任何tree(即根目錄或以任何承諾表示的任何子目錄),但它是最常見的枝梢,標籤中使用,並提交。

+0

+1不錯的答案。一些小的東西 - 如果沒有爲'git archive'指定輸出文件,'tar'是默認的格式,所以你不需要這個參數。此外,而不是'cd/path/to/destination && tar xf -',您可以執行'tar -C/path/to/destination -x' [如此處所示](http://stackoverflow.com/questions/ 3364575 /什麼最最好的方式對提取物-A-樹從-A-混帳資料庫/ 3364612#3364612)。 – 2011-03-26 07:14:31