Git 修复后如何应用被拒绝的帅哥?
我正在尝试使用Git 修复后如何应用被拒绝的帅哥?,git,conflict,patch,git-apply,Git,Conflict,Patch,Git Apply,我正在尝试使用git apply将修补程序应用于文件。整个补丁失败了,所以我使用了git apply--reject 通过检查生成的.rej文件,我发现了问题所在,现在我修复了.rej文件中的问题 但尝试应用.rej文件失败,并显示消息 致命:第2行没有标题的修补程序片段: 在修复了.rej文件中的问题后,是否有方法重新应用该文件? 或者我必须修改原始补丁并重新运行git apply 在这种情况下,这将有点麻烦,因为原始修补程序包含几十个文件的修补程序,我不想git签出所应用的修改,以便重新gi
git apply
将修补程序应用于文件。整个补丁失败了,所以我使用了git apply--reject
通过检查生成的.rej
文件,我发现了问题所在,现在我修复了.rej
文件中的问题
但尝试应用.rej
文件失败,并显示消息
致命:第2行没有标题的修补程序片段:
在修复了.rej
文件中的问题后,是否有方法重新应用该文件?
或者我必须修改原始补丁并重新运行git apply
在这种情况下,这将有点麻烦,因为原始修补程序包含几十个文件的修补程序,我不想
git签出所应用的修改,以便重新git应用整个固定修补程序文件。在有.rej
文件你说你已经修好了。一旦所有的.rej
问题都解决了,您就可以进行git提交了
git apply--reject
仍然节省了一点时间,git apply--reject
将尽可能修改文件。我最近遇到了这个问题,当时使用git am--reject
应用了一系列补丁。我处理它的方法是将.rej
文件头按摩成补丁(1)
可以识别的东西,使用
sed -e 's/^diff a\/\(.*\) b\/\(.*\)[[:space:]].*rejected.*$/--- \1\n+++ \2/'
并使用emacs修改它们(其diff模式
将在修改补丁时更新大块中的行数),并使用patch
应用它们
我的工作流程最终如下所示:
$ (for i in $(find . -name \*.rej); do
sed -e 's/^diff a\/\(.*\) b\/\(.*\)[[:space:]].*rejected.*$/--- \1\n+++ \2/' -i $i &&
emacsclient $i &&
patch -p0 < $i;
done) && git add -u && git clean -xdf && git am --continue
$(对于$中的i(find.-name\*.rej);do
sed-e的/^diff a\/\(.*)b\/\(.*)[[:空格:].*已拒绝。*$/--\1\n++++\2/'-i$i&&
EmacClient$i&&
贴片-p0<$i;
完成)和&git add-u和&git clean-xdf和&git am——继续
在emacs中为重复出现的情况设置合适的宏。这不是最优雅的方法,但它确实起了作用。为了澄清问题,问题是.rej
文件在diff a/thefile…
和@-line/columns…
之间缺少一些小东西
原始.rej
文件
您需要从diff
行复制a/b文件名,并使用下面的更改指示器添加它们,如:
更新了.rej
文件
然后您可以像常规补丁一样应用.rej
文件。谢谢您的解释。我会检查你的答案,因为它是简单的英语而不是简单的Bash。。。
diff a/the/original/file.cs b/the/original/file.cs (rejected hunks)
@@ -27,9 +27,9 @@ whatever was on that line
diff a/the/original/file.cs b/the/original/file.cs (rejected hunks)
--- a/the/original/file.cs
+++ b/the/original/file.cs
@@ -27,9 +27,9 @@ whatever was on that line