我有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恢复)吗?
答案 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