我想我做错了什么,但我不确定在哪里。我有一个工作分支和一个主分支。工作分支有一些尚未在主分支上的提交。现在我有一个关键的错误修复,我承诺掌握。我还想在工作分支中进行此提交,因此我使用 rebase。
我在 TortoiseGit 中打开变基窗口,它显示了这个提交。单击"开始变基"后,它通知我发生了几次冲突。我修复了冲突并在变基窗口中按"提交"。
现在,提交显示在提交日志中。好。但是当我想将其推送到服务器时,我被告知 HEAD 已分离。我用git checkout -b temp
解决这个问题并推动这个临时分支。
如果我现在从源获取并再次打开变基窗口,我刚刚推送的提交会再次出现以进行变基。我认为它不应该出现在那里,因为它已经重新定位了。
我还检查了在没有冲突的情况下进行提交时,它不会再次显示在变基窗口中。
我做错了什么?
使用命令行界面时: 修复变基冲突后,你必须提交,然后告诉 git "继续执行当前变基的剩余操作":
git rebase --continue
我不知道 TortoiseGit 做什么或不做什么,看看你是否有一些看起来像"继续变基"或"恢复变基"或......
关于变基的另一件事:git
不会跟踪已经变基的提交,
而是查看每个要重定基址的提交引入的补丁,并扫描目标分支以查看提交是否已经应用了相同的补丁。
当您发生冲突时,您通常会修改生成的补丁中的某些内容,因此变基不会检测到初始提交是否已实际应用,并且该提交将重新出现。
避免此问题的一种方法是将master
合并到branch
中,而不是变基。