Bazaar绑定服务器后离线本地提交,恢复后如何推送至主分支?
搞定Bazaar本地提交推送的步骤
嘿,我来帮你解决这个问题,按下面的步骤操作,就能让历史看起来跟服务器从没宕机过一样:
第一步:先处理未提交更改的问题
rebase要求工作区必须干净,所以先搞定这个:
- 先看看当前状态:敲
bzr status,检查有没有未提交的文件 - 如果有未提交的内容,要么直接提交(记得写个清晰的提交信息):
bzr commit -m "暂存未完成的本地更改";要么暂存起来之后再恢复:bzr shelve(之后用bzr unshelve就能把暂存的内容拿回来)
第二步:变基本地提交到服务器分支顶端
现在要把你的本地提交无缝接到服务器分支的后面:
- 先确认已经绑定到服务器分支:
bzr bind [你的服务器分支路径](比如bzr bind lp:your-project,换成你实际的路径) - 拉取服务器的最新状态(虽然服务器刚恢复,还是拉一下确保同步):
bzr pull,这时候可能会提示有本地提交需要合并,不用管,我们用rebase来处理 - 找到你和服务器最后同步的那个版本——就是服务器宕机前你最后一次拉取/推送的提交,你可以用
bzr log --graph来查看,找到那个共同的revision id - 执行变基,把你的本地提交移到服务器分支的顶端:
bzr rebase --onto [服务器分支路径] [共同版本号] - 如果变基时遇到冲突,手动解决文件里的冲突后,用
bzr resolve标记冲突已解决,然后继续变基:bzr rebase --continue
第三步:推送干净的历史到服务器
变基完成后,你的本地分支历史已经是服务器历史+你的本地提交的完美线性结构了,这时候直接推送就行:bzr push
偷懒小技巧
如果你不想手动找共同版本,可以用临时分支来简化操作:
- 先拉一个服务器分支的临时副本:
bzr branch [服务器分支路径] temp-server-branch - 把本地提交变基到这个临时分支:
bzr rebase temp-server-branch - 推送完成后删掉临时分支:
rm -rf temp-server-branch
这样操作完,整个历史记录就完全连贯,看起来服务器压根没出过问题~
内容的提问来源于stack exchange,提问作者Dorian
相关产品推荐
相关产品推荐

