双方git am并git apply可以用来应用补丁.我没有看到差异.我现在看到了一个区别:git am自动提交而git apply只触及文件但不创建提交.这是唯一的区别吗?
说我得到了一个补丁git format-patch.该文件基本上是一个带有一些元数据的统一差异.如果我在Vim中打开文件,我可以看到哪些行已被修改,但我看不到更改行中的哪些字符不同.有没有人知道(在Vim或其他一些在Ubuntu上运行的免费软件)可视化每个角色的差异?
可视化每个字符差异的计数器示例是在执行时vimdiff a b.
更新时间:2010年12月12日星期五22:36:23
diffpatch对您使用单个文件的情况很有帮助.
2016年6月16日星期六17:56:10更新
在git 2.9中查看diff-highlight.这个脚本正是我最初寻求的.
TortoiseHg允许您将更改的补丁文件通过电子邮件发送给某人,但它是否支持应用补丁?
如果是这样,你如何使用TortoiseHg应用补丁?
解决方案 感谢@Will Bickford的帮助.我刚刚在TortoiseHg网站上发现这个功能被列为TODO.
我正在编辑克隆的远程存储库的一些markdown文件,并且想要测试从一个分支到另一个分支的创建和应用补丁.但是,每次我进行任何更改时,都会收到以下消息git apply:
0001-b.patch:16: trailing whitespace.
warning: 1 line adds whitespace errors.
Run Code Online (Sandbox Code Playgroud)
(这在我的Mac上发生,我不知道原始代码的创建位置.)
警告信息意味着什么,我需要关心吗?
我想${SHA}通过Web界面从GitHub 获得一次提交(让我们称之为).
例如,类似于:
$ git clone http://github.com/foo/bar
$ cd bar
$ git format-patch -o .. ${SHA}~1..${SHA}
$ cd ..
$ rm -rf bar
Run Code Online (Sandbox Code Playgroud)
...但无需克隆整个存储库(问题中的repo很大).
显然GitHub可以通过web接口显示给定提交的差异,但是我如何将其提取到(统一)差异文件中(理想情况下,提交消息完好无损)?
我没有看到'git format-patch'和'git diff'的输出有什么区别,有没有?并且我不能使用'git diff'生成补丁然后使用git apply应用它吗?
我的问题是我对索引添加了更改,但显然git format-patch只接受提交,所以如果我可以使用diff的输出,那么我可以使用此命令为索引中的更改生成一个补丁:
git diff --cached > index.patch
Run Code Online (Sandbox Code Playgroud) 我有两个存储库.在其中一个,我对文件进行了更改./hello.test.我提交更改并使用该提交创建补丁git format-patch -1 HEAD.现在,我有一个第二个存储库,其中包含一个与hello.test具有相同内容的文件,但是以不同的名称放在另一个目录中:./blue/red/hi.test.如何将上述补丁应用于hi.test文件?我试过,git am --directory='blue/red' < patch_file但当然抱怨文件名称不一样(我认为Git并不关心?).我知道我可以编辑差异以应用于该特定文件,但我正在寻找一个命令解决方案.
我正试图git add --interactive有选择地为我的索引添加一些更改,但我不断收到"你编辑的hunk不适用.再次编辑..."消息.即使我选择了e选项,我也会收到此消息,并立即保存/关闭我的编辑器.换句话说,根本不编辑hunk,补丁不适用.
这是我正在使用的确切示例(我正在尝试整理一个小型演示):
原始档案:
first change
second change off branch
third change off branch
second change
third change
fourth change
Run Code Online (Sandbox Code Playgroud)
新文件:
Change supporting feature 1
first change
second change off branch
third change off branch
second change
third change
fourth change
bug fix 1
change supporting feature 1
Run Code Online (Sandbox Code Playgroud)
我试图展示如何使用git add --interactive只添加"错误修复1"行到索引.在文件上运行交互式添加,我选择了补丁模式.它告诉我
diff --git a/newfile b/newfile
index 6d501a3..8b81ae9 100644
--- a/newfile
+++ b/newfile
@@ -1,6 +1,9 @@
+Change supporting feature 1
first change
second change off …Run Code Online (Sandbox Code Playgroud) 我有两个存储库,一个是库的主要仓库,另一个是使用该库的项目.
如果我修复了subservient项目,我想要一个简单的方法将该补丁应用到上游.
每个存储库中文件的位置都不同.
www.playdar.org/static/playdar.jsplaylick.com/lib/playdar.js我尝试git format-patch -- lib/playdar.js在playlick项目上使用,然后git am在主playdar repo上,但补丁文件中的不同文件位置引发了错误.
有没有一种简单的方法可以将给定文件中给定提交的补丁应用到其他地方的另一个任意文件?
对于奖励积分,如果您要应用补丁的文件不在git存储库中,该怎么办?
我知道有这个已经几个线程,但没有一个充分说明究竟如何执行初始DIFF创建补丁文件,那么该如何应用这个补丁初始目录进行更新.
就我而言,有一个文件目录,任何人都可以从网上下载.我已经获取了该目录并对其进行了更改,并希望创建一个补丁文件,以便其他人可以将其应用于下载的目录,以准确再现我在修改后的目录中的内容.
救命?关于如何应用我的补丁,我需要告诉对方什么?
patch ×10
git ×6
diff ×4
git-patch ×3
filenames ×1
git-add ×1
git-am ×1
git-diff ×1
github ×1
interactive ×1
mercurial ×1
tortoisehg ×1
vim ×1
whitespace ×1