2013-08-05 94 views
3

比方說,我們有一個文件有5個補丁,4個補丁修改了文件內容並添加了新的行。但是我們仍然可以將單個補丁5應用於git樹。爲什麼?因爲我認爲行號已經改變,所以行內容不再匹配。 git如何確定我做了哪些改變?通過改變的三線環境?我不認爲這是合理的。git如何處理幾個補丁中的一個?

順便說一句,如何生成一個數字零補丁像[補丁0/5]?看來格式補丁只能從0001生成。

+1

爲什麼你覺得它不合理?另見'patch'命令。 – torek

+0

@VonC因爲如果上下文有多處出現,或者上一個補丁創建了上下文,那麼幾乎不應用補丁5的結果將是錯誤的。 – dspjm

回答

1

通過三行上下文的變化?

這是如何git apply描述它:

確保至少<n>行之前和每次更改後周圍的上下文匹配的。
當存在較少的周圍環境線時,它們都必須匹配。

所以,是的,即使線路改變,背景仍是確定補丁應適用與否的關鍵。


至於編號方面,我沒有測試,但是看的git format-patch command--start-number選項可幫助:

--start-number <n> 

開始編號的補丁在<n>而不是1

+0

似乎所有的問題都解釋得很好,在人補丁。感謝@torek也回答。 – dspjm

+0

只是還沒有得到如何生成[補丁0/n] ...任何人都知道嗎? – dspjm

+0

@dspjm我編輯了我的答案,建議嘗試一個選項(關於補丁編號)。 – VonC