恢复 git 变基的一个补丁
Revert one patch of git rebase
我正处于一个有很多冲突的大型 rebase 中。
刚发现几个 git rebase --continue
之前我不小心删除了一个文件而不是另一个文件。
我如何返回 pacth 并修复此问题,然后重新应用补丁?
编辑:--abort
不是解决方案,因为我将不得不重新进行所有修补程序。我只想中止其中的一部分
git rebase --abort
并重做变基。
执行以下操作:
git rebase --abort
这将中止变基并使您的 HEAD
恢复到变基之前的状态。
我认为没有使用 git rebase
还原单个补丁的选项。请参阅 git rebase 文档中的可能选项。
git rebase --help
GIT-REBASE(1) Git Manual GIT-REBASE(1)
NAME
git-rebase - Forward-port local commits to the updated upstream head
SYNOPSIS
git rebase [-i | --interactive] [options] [--onto <newbase>]
[<upstream>] [<branch>]
git rebase [-i | --interactive] [options] --onto <newbase>
--root [<branch>]
git rebase --continue | --skip | --abort
In case of conflict, git rebase will stop at the first problematic
commit and leave conflict markers in the tree. You can use git diff to
locate the markers (<<<<<<) and make edits to resolve the conflict. For
each file you edit, you need to tell git that the conflict has been
resolved, typically this would be done with
git add <filename>
After resolving the conflict manually and updating the index with the
desired resolution, you can continue the rebasing process with
git rebase --continue
Alternatively, you can undo the git rebase with
git rebase --abort
如果有帮助,也请检查此 link。
http://arigrant.com/blog/2014/5/4/git-rebase-stepping-forward-and-back
你的 repo 中的所有内容都会保留在那里,直到 git 发现它已经完全无法通过任何 ref 访问至少一个月 1.
所以你已经做了一些等同于 git rebase master topic
的事情,比如自分支以来关于主题的 A-Z 提交 26完整效果直到 S:
A...O...Z topic
/
...b....* master
\
A2..O2..S2 the inflight rebase with the mistake in the rebased O, O2
您的退出是
git tag restart O2~
git rebase --abort
git rebase --onto restart O^ topic
现在您只需重做被 oops 感染的提交。
如果O2~..S2系列的提交中有好的部分,你想检索冲突解决方案,你也可以标记S2,然后在你重做的时候只检查那些提交中好的部分, git checkout -p boneyard~3 -- goodpart1 goodpart2 etc etc
(您将 S2 标记为 "boneyard",好的部分在 P2 中)
我已经做到了,清理了一个 rebase,然后不得不重做。如果每个人都曾经这样做过,我不会感到惊讶。这没什么大不了的,即使对于像你这样看似可怕的案例也是如此。
1您可以强制提前截断。不要那样做。
我正处于一个有很多冲突的大型 rebase 中。
刚发现几个 git rebase --continue
之前我不小心删除了一个文件而不是另一个文件。
我如何返回 pacth 并修复此问题,然后重新应用补丁?
编辑:--abort
不是解决方案,因为我将不得不重新进行所有修补程序。我只想中止其中的一部分
git rebase --abort
并重做变基。
执行以下操作:
git rebase --abort
这将中止变基并使您的 HEAD
恢复到变基之前的状态。
我认为没有使用 git rebase
还原单个补丁的选项。请参阅 git rebase 文档中的可能选项。
git rebase --help
GIT-REBASE(1) Git Manual GIT-REBASE(1) NAME git-rebase - Forward-port local commits to the updated upstream head SYNOPSIS git rebase [-i | --interactive] [options] [--onto <newbase>] [<upstream>] [<branch>] git rebase [-i | --interactive] [options] --onto <newbase> --root [<branch>] git rebase --continue | --skip | --abort In case of conflict, git rebase will stop at the first problematic commit and leave conflict markers in the tree. You can use git diff to locate the markers (<<<<<<) and make edits to resolve the conflict. For each file you edit, you need to tell git that the conflict has been resolved, typically this would be done with git add <filename> After resolving the conflict manually and updating the index with the desired resolution, you can continue the rebasing process with git rebase --continue Alternatively, you can undo the git rebase with git rebase --abort
如果有帮助,也请检查此 link。
http://arigrant.com/blog/2014/5/4/git-rebase-stepping-forward-and-back
你的 repo 中的所有内容都会保留在那里,直到 git 发现它已经完全无法通过任何 ref 访问至少一个月 1.
所以你已经做了一些等同于 git rebase master topic
的事情,比如自分支以来关于主题的 A-Z 提交 26完整效果直到 S:
A...O...Z topic
/
...b....* master
\
A2..O2..S2 the inflight rebase with the mistake in the rebased O, O2
您的退出是
git tag restart O2~
git rebase --abort
git rebase --onto restart O^ topic
现在您只需重做被 oops 感染的提交。
如果O2~..S2系列的提交中有好的部分,你想检索冲突解决方案,你也可以标记S2,然后在你重做的时候只检查那些提交中好的部分, git checkout -p boneyard~3 -- goodpart1 goodpart2 etc etc
(您将 S2 标记为 "boneyard",好的部分在 P2 中)
我已经做到了,清理了一个 rebase,然后不得不重做。如果每个人都曾经这样做过,我不会感到惊讶。这没什么大不了的,即使对于像你这样看似可怕的案例也是如此。
1您可以强制提前截断。不要那样做。