运行 变基方向错误?

Ran rebase in wrong direction?

我有 master 和一个 search 分支。我一直在我的 search 分支中进行所有这些更改,并致力于它。然后我 运行 git push origin search.

我已经这样做了几个月了,但现在我想让这些变化反映在 master 中,基本上赶上 mastersearch

我在这里阅读了回复,表明 rebase 可能是我正在寻找的答案。在执行 git checkout mastergit rebase master search 后,我必须解决一堆冲突。解决后,我完成了最终 git rebase --continue 并完成了。

但是,现在我看到 search 的状态是最新的,但是 master 显示一条状态消息说 "Your branch and 'origin/search' have diverged" 并建议我从 master 执行 git pull 以将远程分支(搜索?)合并到我的分支(master?)中。在阅读了这里的一些答案后,我对此仍然有些困惑。

问题 1:我 运行 rebase 命令是否落后了?应该是 git rebase search master?

问题二:我现在该怎么办?我可以回滚(git 还原)吗?

我相信你已经正确地执行了你的 rebase。要验证,请查看您的 search 分支的父提交是否与主分支的提示匹配(git rev-parse search~git rev-parse master

您看到该消息是因为您的本地 search 分支与 search 分支的远程版本不同...这意味着它们不再具有共同的提交...即使两个分支之间的内容可能几乎相同(减去冲突解决更改)。

此消息完全符合预期...您(有充分的理由)重写了 search 分支的历史记录,给它一个不同的基础提交。

因此,如果您想将最新的 search 更改推送到您的远程 search 分支,您将需要像这样执行 "force push":

git push --force origin search

Git 迫使您进行强制推送,因为如果其他开发人员也在 search 分支工作,他们也会出现分歧。

但是,在您合并到 master 之后,您的 search 分支已经以这种方式更改并不重要,使用 master 分支的人会很高兴您在合并到公共分支之前通过变基提高了整体提交历史的清晰度。

这里有更多关于强制推送的信息:https://git-scm.com/docs/git-push#git-push--f