我正在嘗試使用git format-patch從一個回購庫創建補丁並將其應用到另一個回購庫。令我吃驚的是,儘管這兩個文件差異很大,但它仍然奏效。有人可以解釋技術人員如何處理應用修補程序?顯然,它不僅僅使用行號,所以如果有人能指出我的方向真的很棒。Git/Diff修補程序技術說明
6
A
回答
8
有兩種主要方式補丁可以應用到修改的文件:
- 匹配未修飾(「上下文」)和前修改線
上下文線(由單個空間,而不是一個或+
前面-
)是unified diff格式在其GIT中的差異格式在很大程度上是基於的一部分。它們是額外的行,它們在「原始」和「修改」源文件中是相同的,但是圍繞着修改過的區域。這些上下文行(以及預修改行(即刪除/更改的行))被程序使用,該程序應用diff來查找應該應用每個diff「hunk」的位置,即使目標「target」文件已經插入或在正常目標位置之前移除行(正常位置由行號指定,由於插入/移除行,已在「目標」文件(相對於「原始」文件)中有效地改變了行號)。
Git的diff格式還包含一個特殊的「索引」行,用於指示「原始」和「修改」文件的對象ID(即縮寫爲SHA-1哈希)的每個修改文件。如果目標存儲庫在其對象存儲中具有「原始」文件,則可以使用它來準確重構「已修改」文件的內容,然後在文件的三個版本之間執行「原始」,「已修改」 (兩個源文件)和「目標」(目標文件)。這由git am -3
使用,可以幫助自動解決補丁和「目標」文件之間的一些衝突。
相關問題
- 1. Rss/Feedburner技術說明?
- 2. 修補程序透明度問題(FaceAlpha)
- 3. 修補程序datetime.timedelta.total_seconds
- 4. Esky修補程序
- 5. Java術語說明
- 6. 修補程序/修補程序的構建和交付方法
- 7. 用2'補碼技術表示負數?
- 8. 修補程序錯誤:「檢測到未反向的修補程序!跳過修補程序。」
- 9. 更改修補程序中的文件名或編輯修補程序,使修補程序保持有效
- 10. 使用方法修補程序覆蓋類修補程序(修飾符)
- 11. JavaScript修補程序錯誤
- 12. 跨平臺修補程序
- 13. Visual Studio 2008修補程序
- 14. Laravel修補程序AJAX
- 15. AWS Linux API修補程序
- 16. 選擇性修補程序
- 17. 的ColdFusion 9.0.1修補程序
- 18. Azure WebApp修補程序
- 19. Cuteeditor在修補程序
- 20. ILMerge後修補程序
- 21. Alexa技能處理程序狀態(Alexa.CreateStateHandler)說明
- 22. 圖形修補程序實用程序
- 23. mint.com編程技術
- 24. 九個可修剪的修補程序
- 25. Visual Studio 2010修補程序[修復]
- 26. 修改文件中的修補程序
- 27. MSI修補程序未針對修補版本(錯誤2356)
- 28. 要在Android中創建九個可修補的修補程序?
- 29. 如何在Windows上完成修補MQ修補程序
- 30. 針對修補程序和修補程序等發佈分支的Git rebase
你可以看看代碼。 – Dipstick 2011-03-11 00:44:44
代碼只有行號範圍,帶有+和 - 行可以刪除和添加。 – David 2011-03-11 02:02:56