2012-04-23 28 views
1

假設有項目庫(在GitHub上)和我的fork(也在GitHub上)。我的分支是相同的,除了包含一個修訂到單個文件(一個錯誤修復),尚未(尚未)被項目存儲庫接受。我試圖向第三方提供關於如何下載最新版本軟件的安裝說明,包括我的錯誤修復。從遠程倉庫的Cherrypick單一修訂?

據我所知,他們就必須做到這一點:

git clone http://projectrepo 
git remote add myrepo http://myrepo 
git fetch myrepo 
git cherry-pick a12345 
git remote rm myrepo 

(假設我不打算維持myrepo最新的 - 我想我的指示活得比我與參與項目,這可能會很快結束還假定其它的變化可能發生到這個文件,所以乾脆下載整個文件的副本並不安全)

一些與次優的:。

  1. 他們需要傳輸兩個完整的Git回購
  2. 這是三個額外的命令只是爲了獲得一個文件。

有沒有更好的解決方案?你能以更簡單的方式獲得單一版本嗎?

+0

使用git協議,git:// somerepo,速度更快。 git很少,如果曾經拉過你已有的物體,它並不關心物體來自哪裏。 – jthill 2012-04-23 04:47:07

+0

他們爲什麼需要自行應用補丁?難道你不能把它們指向你的回購,它已經包含了你的錯誤修復? – CharlesB 2012-04-23 06:50:26

+0

@CharlesB:看到關於不維護myrepo的聲明。 – 2012-04-23 07:47:20

回答

2

跳過remote add/remote rm

git clone http://projectrepo 
git fetch http://myrepo remote-branch-name 
git cherry-pick a12345 

如果你知道犯是remote-branch-name的頭,然後您可以改爲使用git cherry-pick FETCH_HEAD

0

AFAICT沒有必要手動告訴git獲取兩個回購站。你可以去

git clone http://myrepo 
cd myrepo; git co <rev/branch> # maybe 

而git/github負責所有的細節。

+0

是的,但是他們沒有得到未來主要項目回購改進的好處。 – 2012-04-23 04:15:21

4

只是創建一個補丁文件並告訴他們應用它有什麼錯誤?你甚至可以將它保存爲一個要點,以避免發送電子郵件。

創建補丁:

git format-patch -1 a12345 

應用它:

git clone http://projectrepo 
cd projectrepo 
wget https://raw.github.com/gist/<patch-file> 
git am -3 <patch-file> 
+1

錯誤,這是一個完美的克羅埃爾解決方案。謝謝。 – 2012-04-23 05:51:03