2014-09-30 146 views

回答

1

git stash show -p的輸出本身就是一個有效的補丁。您可以直接使用它:

git stash show -p [email protected]{2} > file.patch 
1

the git format-patch documentation,如果指定單個提交,則:

  1. 單個提交,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}標識單個提交,具體工作樹中的「藏包」承諾。

    +0

    感謝您的信息,但約翰直接回答了這個問題,所以他是我接受的那個!乾杯 – 2014-10-02 07:59:20