跑错了方向?

时间:2018-08-01 18:06:35

标签: git git-rebase git-revert

我有master和一个search分支。我一直在我的search分支中进行所有这些更改,并将其提交。然后我运行git push origin search

我已经这样做了几个月,但是现在我想让这些更改反映在master中,基本上将master吸引到search

我在这里阅读了表明rebase的答案,这可能是我想要的答案。在执行git checkout master然后执行git rebase master search时,我不得不解决很多冲突。解决后,我完成了最后一个git rebase --continue,它就完成了。

但是,现在我看到search的状态是最新的,但是master显示了一条状态消息,说明“您的分支机构和“来源/搜索”已经不同” < / strong>,建议我做一个git pull管理员,将远程分支(搜索?)合并到我的管理员(管理员?)中。在阅读了这里的一些答案后,我对此仍然有些困惑。

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

问题2:我现在应该怎么办?我可以回滚(git恢复)吗?

1 个答案:

答案 0 :(得分:1)

我相信您已经正确执行了基准。要进行验证,请查看您的search分支的父提交是否与master分支的尖端(git rev-parse search~git rev-parse master)匹配

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

这条消息是完全可以预期的...(出于非常充分的理由)您已经重写了search分支的历史记录,并为其赋予了不同的基本提交。

因此,如果您想将最新的search更改推送到远程search分支,则需要像这样进行“强制推送”:

git push --force origin search

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

但是,在您合并到master之后,以这种方式更改search分支并不重要,并且使用master分支的人们会很高兴您有所改进在合并到common分支之前通过重新定基础来清除总体提交历史记录。

以下是有关推力的更多信息:https://git-scm.com/docs/git-push#git-push--f