- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 git format-patch 从一个存储库创建补丁并将其应用到另一个存储库。令我惊讶的是,即使这两个文件非常不同,它也能正常工作。有人可以解释一下 git 究竟如何处理应用补丁的技术吗?显然它不只是使用行号,所以如果有人能指出我正确的方向,那就太棒了。
最佳答案
有两种主要方式可以将补丁应用于修改后的文件:
上下文行(前面是一个空格而不是 +
或 -
)是 unified diff 的一部分Git 的 diff 格式主要基于的格式。它们是在“原始”和“修改”源文件中相同但围绕修改区域的额外行。即使目标“目标”文件已经插入,应用差异的程序也会使用这些上下文行(以及修改前的行(即删除/更改的行))来查找应该应用每个差异“ block ”的位置或删除正常目标位置之前的行(正常位置由行号指定,由于插入/删除行,行号在“目标”文件(相对于“原始”文件)中已有效更改)。
Git 的 diff 格式还为每个修改后的文件包含一个特殊的“索引”行,指示“原始”和“修改后”文件的对象 ID(即缩写的 SHA-1 哈希值)。如果目标存储库在其对象存储中有“原始”文件,它可以使用它来准确地重建“修改后”文件的内容,然后执行 three-way merge。在文件的三个版本之间:“原始”、“修改”(两个源文件)和“目标”(目标文件)。这由 git am -3
使用,可以帮助自动解决补丁和“目标”文件之间的一些冲突。
关于Git/Diff Patch 技术讲解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267577/
1、流程控制语句主要有if、ii...else、elseif(有时也可以写成else if)、switch四种。 PHP中语句格式为: if(条件满足) {执行语句} if(条件满足) {执行
目录 DFS初步概念 DFS例题-迷宫游戏 题目描述 输入输出格式 输入输出样例
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
这个正则出自这个网站 http://www.regexlab.com/zh/regref.htm 正向预搜索:"(?=xxxxx)","(?!xxxxx)"
chr(9)、chr(10)、chr(13)、chr(32)、chr(34) 所有关于 ASCII码的表格:[url]http://www.asciitable.com/[/url] chr(13)
我是一名优秀的程序员,十分优秀!