我已经使用rebase将dev分支“合并”到master中,它工作正常。现在,master包含dev分支中的所有内容,这就是我想要的。但是,现在我需要将它推送到github,它一直给我冲突。如何推送/同步到github并覆盖那里的所有文件?
答案 0 :(得分:1)
如果您在master
之上重新定位dev
,是的,master
“包含dev
分支中的所有内容”,但其历史记录已被重写(因此git push --force
)
正确的顺序是:
首先在dev
重播master
:
git checkout dev
git rebase master
然后将dev
合并到master
(快进合并)
git checkout master
git merge dev
在这种情况下,master
可以在没有“冲突”的情况下推送到其远程上游仓库。
答案 1 :(得分:0)
我可能会做些什么来确保我掌握了其他人看到的所有内容,并从开发分支引入我的更改:
首先,确保在任何主要变基或合并之前引用了您的开发分支的HEAD。
将master重置为现在的样式
git checkout master
git reset --hard origin/master
在dev上播放更改,就好像它们是在master分支上完成的那样
git checkout dev
git rebase master
将这些更改合并为master(它将是快进合并)
git checkout master
git merge dev
发送这些更改
git push origin master
如果你像其他人建议的那样强制推送,那可能没问题,但是如果其他人引用你用你的rebase覆盖的那些git对象,那么当他们从github上的那个repo中获取时会有冲突(所以你会需要告诉他们你做了推力)。一般规则是永远不要重写其他人所知道的历史。因此,一旦你向“公共”遥控器推进,最好不要强行推动。