用git中的另一个分支覆盖master中的所有内容

时间:2015-04-25 20:23:30

标签: git

我在git存储库中有一个非常过时的master分支。

我的所有工作都在另一个分支完成。

合并两者的最佳方法是什么?

我不关心master中的任何事情,这已经过时了。

4 个答案:

答案 0 :(得分:9)

如果您没有丢失主分支的历史记录,只需让master指向当前分支的头部(您不要“覆盖”master - 分支 - 本身):

git checkout yourotherbranch
git branch -D master
git checkout -b master

当然,如果您有远程克隆,那么您必须

git push -f origin master 

Nota bene :此具体适用于替换整个master分支并将标题建议的旧master扔掉。 否则,您应该使用git merge master --strategy=ours

答案 1 :(得分:6)

让我们假设您的工作位于名为dev的分支中:

git checkout dev 
git merge --strategy=ours master
git checkout master 
git merge dev

合并选项--strategy=ours 旨在用于取代分支的旧开发历史记录quote)。

答案 2 :(得分:1)

完全覆盖不会合并其他内容,而是放弃它。

git checkout -B master anotherbranch

这比删除并重新创建保留分支设置和reflog更有优势。

如果您的历史记录中有一些管理要求要保留毫无价值的提交,请使用git merge -s ours master@{1}进行操作。我更喜欢这个序列,因为它会生成一个不寻常的合并消息,它会提醒扫描--oneline日志合并异常。

答案 3 :(得分:1)

使用git merge strategy=ours解决方案可以回答很多这些问题,但是我认为它没有解决问题的重点。我将问题解释为“我没有遵循良好的实践,并且基本上主人没有用,而我也不想从主人那里得到任何东西”。在个人项目中很常见。

git push -f origin branch_ive_been_working_for_months:master用您的远程分支完全替换您的远程主服务器。那么,只需在本地签出master后git pull origin master,便可以直接回答问题IMO。