使用master的GIT Overwrite分支


33

我有一个旧的dev分支,它已经完全过时了。我不想删除它,但是我确实想用master分支完全替换它的内容。意思是,我要dev_branch = master

我试过了:

git merge -s ours dev_branch

没用...

Answers:


53

如果要从master中进行所有更改dev_branch,则:

git checkout dev_branch
git reset --hard master

这仅在其他人尚未克隆存储库的情况下才有效。

如果您已经dev_branch将其推送到遥控器,则必须执行以下操作:

git push --force

强制推向遥控器。警告:这将破坏以前克隆该分支的人的历史记录!然后,其他人不得不做git pull --rebasedev_branch到什么变化。


您还可以将dev分支重命名为旧的分支,然后master使用相同的名称创建一个新分支:

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

或者,使用该ours策略-不知道为什么它对您不起作用:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master

通过重命名解决方案,我想您会发现您现在无法推dev_branch送到源(如果有的话),并且您也将不再在master本地拥有分支。
艾丹,2015年

谢谢@slhck!由于某种原因,在进行正常合并后,我的舞台分支未得到更新。它一直说我的舞台分支是最新的。使用“我们的”策略为我解决了这个问题。
Slick Shinobi

我们的只会影响冲突的块,但他想彻底更新分支,而不仅仅是冲突!(这至少是我需要做的,也是为什么我找到这个问题)-我将重命名!
马丁·迈瑟
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.