2013-05-17 69 views
1

希望有人能夠幫助解決這個問題,因爲它可能會阻止我們將開發環境切換到使用git。將git變更集導出到封閉環境回購

我們將在共享的網絡環境中提供多個git回購。 git的標準用法。但是,我們也需要有一個源代碼需要複製到的獨立環境。這基本上是通過刻錄CD並將源頭引入環境來完成的。我們的一些代碼庫相當龐大,所以我們的CM人員不希望每次需要將源代碼放入封閉環境時都需要複製整個回購。

我們目前使用ClearCase,它能夠從外部回購庫中導出增量和提交信息,然後將其導入到獨立的回購庫中。代碼將永遠不會將單獨的回購商品重新導入外部回購商品。

這個功能在git中可用嗎? I.E.在外部回購,導出變更集,將它們刻錄到CD上,將它們帶入一個孤立的環境,並將這些變更集(以及提交信息)應用於該回購?

感謝您的幫助!要做到這一點

+2

聽起來像你想創建一個補丁:http://stackoverflow.com/questions/6658313/generate-a-git-patch-for-a-specific-commit。 –

+0

@FelixKling的確如此。謝謝! – aschneid

+2

'git help bundle' – twalberg

回答

1

一種方法是 format-patch

 
$ git format-patch 8fbee89..master 
0001-Remove-the-insane-fold-operation-replace-with-saner-.patch 
0002-Make-array-construction-use-LOADVN-slightly-faster.patch 
0003-EACH-need-not-make-a-backtrack-point-on-the-last-ite.patch 

在每個文件中包含的是這樣的

 
From bc42812715fb56e72717bf18809dd9ba59771b3a Mon Sep 17 00:00:00 2001 
From: Stephen Dolan 
Date: Thu, 16 May 2013 15:07:53 +0100 
Subject: [PATCH 1/3] Remove the insane "fold" operation, replace with saner 

,或者如果你正在使用的GitHub它可以使它成爲DIFF和偉大的信息您!

github.com/stedolan/jq/compare/8fbee89...master.patch

然後拿補丁文件的 「鎖定」 區域或什麼的,並運行

git am 0001-Remove-the-insane-fold-operation-replace-with-saner-.patch 

等。

How do patches work in Git?

2

使用git bundle,作爲twalberg建議。你可以捆綁了整支,branch-name,有:

git bundle create bundlefile branch-name 

或者只是因爲last-release-version標籤三角洲:

git bundle create bundlefile-delta last-release-version..branch-name 

束可以更有效地比補丁運輸和更簡單應用:

git fetch bundlefile-delta branch-name:branch-name