Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个相当于;git apply——拒绝;对于git rebase?_Git_Patch_Rebase - Fatal编程技术网

是否有一个相当于;git apply——拒绝;对于git rebase?

是否有一个相当于;git apply——拒绝;对于git rebase?,git,patch,rebase,Git,Patch,Rebase,我想使用git-rebase进行一系列提交,并将它们应用于不同的根提交。比如说, git rebase --onto root start finish 基于root获取从start到finish的提交 当git无法干净地应用提交时,它会更新文件以显示如下冲突(git手册中的示例): 这也是patch程序的行为-因此我可以通过首先使用git show输出提交,然后使用patch应用提交来获得所需内容。但是,当涉及多个提交时,这并不方便 有没有办法用git-rebase(或另一个git命令)来实

我想使用
git-rebase
进行一系列提交,并将它们应用于不同的根提交。比如说,

git rebase --onto root start finish
基于
root
获取从
start
finish
的提交

当git无法干净地应用提交时,它会更新文件以显示如下冲突(git手册中的示例):

这也是
patch
程序的行为-因此我可以通过首先使用
git show
输出提交,然后使用
patch
应用提交来获得所需内容。但是,当涉及多个提交时,这并不方便


有没有办法用git-rebase(或另一个git命令)来实现这一点呢?

您可以在逐个提交的基础上执行类似的操作

当发生合并冲突时,git会给出如下消息:

CONFLICT (content): Merge conflict in file.c
Failed to merge in the changes.
Patch failed at 0004 Changes to file
The copy of the patch that failed is found in:
   /home/g/src/project/.git/rebase-apply/patch
如果文件.c由于显示文件中的合并冲突而损坏,则可以将文件恢复到提交之前的状态

git reset file.c
git checkout file.c
然后你就可以跑了

patch -p1 </home/g/src/project/.git/rebase-apply/patch
然后手动在file.c.rej中进行更改,然后运行

git add -u
git rebase --continue

继续。

您是否考虑过使用视觉差异/合并工具来帮助您解释冲突标记?我使用了Beyond Compare,我发现它节省了我很多时间来修复合并冲突。我不知道它们是什么。它们是否允许您指定一个帅哥在文件中的应用位置?(我已经重新组织了文件,git或patch不知道将这些大块应用到哪里,这就是为什么我想手动完成所有操作。)您使用的是什么操作系统,Windows、OS X还是Linux?有一个Linux版本,你可以尝试,如果你想。可能还有其他用于Linux的diff/merge工具
vimdiff
是另一个可能随Linux发行版提供的工具,但在我看来,它不如“无与伦比”工具好。阅读功能或查看屏幕截图,看看它是否有助于您更轻松地解决合并冲突。我不会像那样批量处理拒绝,因为您对早期拒绝的解决方案很容易影响以后出现的冲突。一旦你的工具为你工作了,交互式的rebase就会非常快。Git只是盒子里的一个工具,你的编辑器是另一个。
patch -p1 </home/g/src/project/.git/rebase-apply/patch
patching file file.c
Hunk #2 FAILED at 1133.
Hunk #3 FAILED at 1167.
Hunk #4 FAILED at 1201.
Hunk #5 FAILED at 1241.
Hunk #6 FAILED at 1251.
Hunk #7 succeeded at 1324 (offset 6 lines).
Hunk #8 FAILED at 1325.
Hunk #9 succeeded at 2142 (offset 11 lines).
Hunk #10 succeeded at 2163 (offset 11 lines).
Hunk #11 succeeded at 2181 (offset 11 lines).
Hunk #12 succeeded at 2279 (offset 11 lines).
Hunk #13 succeeded at 2299 (offset 11 lines).
Hunk #14 succeeded at 2412 (offset 11 lines).
Hunk #15 succeeded at 2508 (offset 11 lines).
Hunk #16 succeeded at 2531 (offset 11 lines).
Hunk #17 succeeded at 2540 (offset 11 lines).
Hunk #18 succeeded at 2581 (offset 11 lines).
Hunk #19 succeeded at 2599 (offset 11 lines).
Hunk #20 succeeded at 2611 (offset 11 lines).
Hunk #21 succeeded at 2629 (offset 11 lines).
Hunk #22 succeeded at 2637 (offset 11 lines).
Hunk #23 succeeded at 2668 (offset 11 lines).
Hunk #24 succeeded at 2677 (offset 11 lines).
Hunk #25 succeeded at 2805 (offset 11 lines).
Hunk #26 succeeded at 2871 (offset 11 lines).
Hunk #27 succeeded at 2911 (offset 11 lines).
Hunk #28 succeeded at 3028 (offset 11 lines).
Hunk #29 succeeded at 3085 (offset 11 lines).
Hunk #30 succeeded at 3117 (offset 11 lines).
Hunk #31 succeeded at 3557 (offset 11 lines).
Hunk #32 succeeded at 3572 (offset 11 lines).
Hunk #33 succeeded at 4773 (offset 11 lines).
Hunk #34 succeeded at 4807 (offset 11 lines).
Hunk #35 succeeded at 4859 (offset 11 lines).
6 out of 35 hunks FAILED -- saving rejects to file file.c.rej
git add -u
git rebase --continue