Git rebase一致地删除更改

Git rebase一致地删除更改,git,rebase,Git,Rebase,出于某种原因,每次我尝试使用rebase时,它都会放弃所有功能分支提交。下面是一个示例,演示了主控台上的交互式重新基准显示: pick 05973319 First commit pick 62341efd Second commit pick e1c1a080 Third commit pick 2b5285f7 Fourth commit 请注意,所有这些提交都是在功能分支上进行的。现在,当我退出交互模式时,由于冲突,重基失败。但是,$git log不显示任何功能分支提交。如果我查看在要

出于某种原因,每次我尝试使用rebase时,它都会放弃所有功能分支提交。下面是一个示例,演示了主控台上的交互式重新基准显示:

pick 05973319 First commit
pick 62341efd Second commit 
pick e1c1a080 Third commit
pick 2b5285f7 Fourth commit
请注意,所有这些提交都是在功能分支上进行的。现在,当我退出交互模式时,由于冲突,重基失败。但是,
$git log
不显示任何功能分支提交。如果我查看在要素分支中修改的文件,所有这些更改都将被丢弃

每次我在多个存储库上使用rebase时,这种情况似乎都会发生。在其他不存在冲突的情况下,Git只需删除我的所有更改,并表明没有任何错误

我不明白这种解决冲突的方式是如何被接受的。是否存在可能导致这种情况的错误配置或反模式?请注意,与
$git merge master
的合并始终按预期进行

。。。现在,当我退出交互模式时,由于冲突,重基失败

它还没有失败。应用零个或多个
pick
命令后,它已停止

在任何现代git中,
git status
命令都会告诉您现在处于一个尚未完成的交互式重基中。(在过去糟糕的日子里,
git status
没有告诉你这些事情,你只需要知道或猜测。)

$git log
不显示任何功能分支提交

这表明问题发生在第一次cherry pick期间,因此没有一个pick提交处于正在进行中、正在构建的分支中。也就是说,到目前为止,您的四个
pick
s中没有一个成功。
pick 05973319
正在进行中,在git给您留下一团乱麻后,
git status
将告诉您哪些文件需要手动按摩才能修复

您的工作是修复它们,可能使用工作树中留下的混乱,可能使用
git mergetool
和一些喜欢的合并工具;方法由你决定。但你必须解决问题。修复了它们,并在必要时运行
git add
,1您的
git status
将告诉您所有冲突都已修复,您应该运行
git-rebase--continue
以使rebase最终确定樱桃选择并继续下一个选择。下一个可能有冲突,也可能没有冲突。如果没有,Git将自己完成
选择
,然后转到第三个,否则整个过程会重复

这种重基行为是正常的,但其常见程度取决于您的工作模式和输入文件。有些人经常遇到它,有些人几乎从未遇到过


1如果您使用
git mergetool
,它通常会为您执行相应的
git add
s。我更喜欢避免使用
git mergetool
:我将
merge.conflictStyle
设置为
diff3
,通常只需使用我的编辑器处理工作树中留下的混乱。设置
diff3
样式将更改标记的冲突,以包括第一个或合并基输入。默认样式只剩下第二节,即我们的节和第三节,即他们的节。因此,我们和他们的版本所背离的合并基代码是不可见的,这有时使冲突很难理解。但这完全是个人品味的问题

。。。现在,当我退出交互模式时,由于冲突,重基失败

它还没有失败。应用零个或多个
pick
命令后,它已停止

在任何现代git中,
git status
命令都会告诉您现在处于一个尚未完成的交互式重基中。(在过去糟糕的日子里,
git status
没有告诉你这些事情,你只需要知道或猜测。)

$git log
不显示任何功能分支提交

这表明问题发生在第一次cherry pick期间,因此没有一个pick提交处于正在进行中、正在构建的分支中。也就是说,到目前为止,您的四个
pick
s中没有一个成功。
pick 05973319
正在进行中,在git给您留下一团乱麻后,
git status
将告诉您哪些文件需要手动按摩才能修复

您的工作是修复它们,可能使用工作树中留下的混乱,可能使用
git mergetool
和一些喜欢的合并工具;方法由你决定。但你必须解决问题。修复了它们,并在必要时运行
git add
,1您的
git status
将告诉您所有冲突都已修复,您应该运行
git-rebase--continue
以使rebase最终确定樱桃选择并继续下一个选择。下一个可能有冲突,也可能没有冲突。如果没有,Git将自己完成
选择
,然后转到第三个,否则整个过程会重复

这种重基行为是正常的,但其常见程度取决于您的工作模式和输入文件。有些人经常遇到它,有些人几乎从未遇到过


1如果您使用
git mergetool
,它通常会为您执行相应的
git add
s。我更喜欢避免使用
git mergetool
:我将
merge.conflictStyle
设置为
diff3
,通常只需使用我的编辑器处理工作树中留下的混乱。设置
diff3
样式将更改标记的冲突,以包括第一个或合并基输入。默认样式只剩下第二节,即我们的节和第三节,即他们的节。因此,我们和他们的版本所背离的合并基代码是不可见的,这有时使冲突很难理解。但是