Git rebase into master并推动没有冲突

时间:2014-01-14 10:20:17

标签: git github

我已经使用rebase将dev分支“合并”到master中,它工作正常。现在,master包含dev分支中的所有内容,这就是我想要的。但是,现在我需要将它推送到github,它一直给我冲突。如何推送/同步到github并覆盖那里的所有文件?

2 个答案:

答案 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中获取时会有冲突(所以你会需要告诉他们你做了推力)。一般规则是永远不要重写其他人所知道的历史。因此,一旦你向“公共”遥控器推进,最好不要强行推动。