我想創建一個基於舊藏匿的DIFF一個.patch
文件,我可以git stash show -p [email protected]{2}
生成補丁文件
我想這個觀點,但沒有運氣:
git format-patch [email protected]{2} --stdout > file.patch
我認爲它會像一個正常的提交工作?抱歉,最可能超厚。
謝謝!
我想創建一個基於舊藏匿的DIFF一個.patch
文件,我可以git stash show -p [email protected]{2}
生成補丁文件
我想這個觀點,但沒有運氣:
git format-patch [email protected]{2} --stdout > file.patch
我認爲它會像一個正常的提交工作?抱歉,最可能超厚。
謝謝!
git stash show -p
的輸出本身就是一個有效的補丁。您可以直接使用它:
git stash show -p [email protected]{2} > file.patch
每the git format-patch
documentation,如果指定單個提交,則:
- 單個提交,
since
,指定了提交,導致將不會輸出歷史記錄中當前分支的尖端,從而導致輸出since
。
因此,format-patch
試圖尋找「的提交導致當前分支的尖端」(HEAD
),它們的[email protected]{2}
既不本身[email protected]{2}
也不祖先。很難精確地說應該承擔這些將是不知道實際的承諾圖形,但如果圖形看起來是這樣的:
... - o - o - * - * <-- HEAD=branch
|\
i-w <-- [email protected]{2}
然後format-patch
將使包含兩次提交標誌着*
補丁:他們是唯一HEAD
的祖先不會從w
提交開始並且反向工作而被刪除。
如果圖形看上去更像是這樣的:
* <-- HEAD=branch
/
... - o - o - o - o <-- anotherbranch
|\
i-w <-- [email protected]{2}
然後再次,你會得到提交標註*
(一次提交這個時候,正好是有點不同)。 (實際上,您獲得的確切數量與[email protected]{2}..HEAD
相同,因爲這個gitrevisions
syntax意味着format-patch
文檔的第1項中的內容)。
一種解決方案是,進入第2項所述format-patch
文檔中:
- 通用版本範圍表達(請參見 「指定修訂」 一節中gitrevisions(7) )表示在指定範圍內的提交。
在這裏,你只需要在指定提交「之前的w
犯藏匿袋」到「w
承諾本身」,這簡直是[email protected]{2}^[email protected]{2}
:
git format-patch [additional options like --stdout here] [email protected]{2}^[email protected]{2}
由於這是一個單一的提交,這與僅使用git show
(如John Zwinck suggested)之間的唯一區別在於該修補程序的精確格式(默認情況下,format-patch
會生成郵箱樣式修補程序)。
或者,您可以隨時轉藏匿成「真正的分支」使用git stash branch
。如果需要,這會將索引提交i
變爲真實提交,並在創建新分支之後恢復工作目錄狀態(以及未跟蹤或全部文件狀態,如果這些狀態之一包含在存儲中)在父提交中,即,藏匿袋所附的一個。提交生成的工作樹,並且您有一個普通分支,您可以使用所有普通分支操作(包括format-patch
)操作該分支。
見some of my other descriptionsabout git "stash bags"看到一個藏匿處是提交的一小叢,但要注意名稱[email protected]{2}
標識單個提交,具體工作樹中的「藏包」承諾。
感謝您的信息,但約翰直接回答了這個問題,所以他是我接受的那個!乾杯 – 2014-10-02 07:59:20