我目前正处于经历十几次提交的长篇大论。我在开发过程中构建了一些内容,只有HEAD
中的更改才是我要保留的内容 - 所有其他冲突(例如提交哈希b06a1dd
)都应该删除。
有没有办法简单地删除与>>>>>>> b06a1dd
相关的所有更改,并保持Git将一举标记<<<<<<< HEAD
的更改,所以我不必继续键入{{1处理来自更多提交哈希的更多冲突,并且只保留git rebase --continue
更改?
答案 0 :(得分:19)
如果你愿意开始转换(git rebase --abort
),那么这应该做你需要的:
git rebase -X ours upstream
其中upstream
是您要重新定位的分支。
正如this answer和其他地方所述,ours
与theirs
标签对于变基比混合更容易混淆。在启动rebase之后,Git创建一个匿名分支并开始对其进行提交。由于ours
表示&#34;保持对当前分支的更改&#34;,当前分支将为HEAD
,其中包含upstream
以及rebase
已应用的所有更改
答案 1 :(得分:3)
为了完整起见,这是我从当前问答中的先前答案和评论中学到的东西(功劳归其作者):
git rebase --abort
然后git rebase -X ours upstream
可以解决问题。但是我想在实践中您不希望盲目使用ours
或theirs
而不用检查每个提交。您可能想针对每次提交的具体情况做出决定,当它处于“冗长的改组过程中”时。因此,您的实际选择将是:
要使用上游:
git checkout --ours path/to/a/specific/file
git add path/to/a/specific/file
甚至更好,在这种情况下,您只需使用以下代码即可:
git reset HEAD path/to/a/specific/file
使用功能分支:
git checkout --theirs path/to/a/specific/file
,或者以手动方式执行,以解决编辑器中的每个<<<< ... ==== ... >>>>
。
PS:The ours
and theirs
have special meaning when doing rebase.
答案 2 :(得分:0)
有一个类似的问题,在我的情况下,我要迁移到的分支是一个新分支(我刚刚创建了这个分支,因此是空的),所以我只需要一个很好的旧拉:
git rebase --abort && git pull origin my/remote_branch