我在本地进行了项目更改,但我知道远程存储库(源)也有一些我在本地没有的更改。
我使用注释(-m)正常提交我的本地更改(在master上)。让我们称这个提交为第一次提交'
git fetch origin
我确实这样做:git checkout master
git rebase origin/master
2个文件存在冲突。利用冲突标记(<<<<< HEAD等)将冲突标记为正常。上半部分显示原产地/主人的内容,下半部分显示我的主版本中的内容。 在结束标记(即>>>>>>)之后,它显示了原始/主版本中的部分行(显然这是一个补丁或其他东西)我不明白这一点
我根据需要创建了两个文件并删除了所有冲突标记标记等。
git add .
git commit
带有注释(-m),其中我说我解决了一些合并冲突。让我们称这个提交为“冲突解决委员会”。
git rebase --continue
这抱怨没有变化。我无法继续,没有更多的冲突。 git status
说“所有冲突都已解决”。运行' git rebase - 继续'。唯一的选择似乎是' git rebase --skip'跳过补丁'不管那是什么。
git rebase --skip
状态后表示你的分支在1个提交,工作树清理等方面领先于origin / master。好的,这是预期的。
git log
按照我想要的顺序显示所有提交,但第一次提交'无处可见它只显示了“冲突决定委员会”#39;在顶部。来自origin / master的提交直接位于其下方。所有文件(有冲突的文件以及其他已更改的文件)中的更改仍然存在,因此我没有忽略实际的更改。
为什么它没有显示第一个提交'我给那里的评论?
答案 0 :(得分:2)
你在第9步出错了。你不应该在你正在解决冲突的rebase操作中提交新的提交。在第9步,您应该运行git commit -m "..."
,而不是运行git rebase --continue
。顺便说一句,这就是git rebase --continue
在步骤10中抱怨的原因。
一般情况下,您可以运行git status
,git会告诉您最有可能要做的选项。例如,如果您在步骤8之后运行了git status
,则会说(all conflicts fixed: run "git rebase --continue")
。
您可能已经销毁了您正在寻找的原始提交(因为它没有出现在您的日志中)。它被" CONFLICT RESOLVE COMMIT"取代。您在步骤9中运行的。您有一些选择:
git rebase -i
)将提交消息更改为您想要的任何内容。git reflog
(google it)取回原始提交,然后再次尝试使用rebase。