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


Overwrite everything in master with another branch in git

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

我所有的工作都是在另一个部门完成的。

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

我不在乎master里的任何东西,它已经过时了。


如果您对丢失主分支机构的历史感到满意,您只需让master指向当前分支机构的负责人(您不"覆盖"master分支机构本身):

1
2
3
git checkout yourotherbranch
git branch -D master
git checkout -b master

当然,如果你有一个远程克隆,那么你就必须

1
git push -f origin master

注意:这特别适用于替换你的整个master分支,并按照标题所示扔掉旧的master。否则,你应该对git merge master --strategy=ours很好。


假设你的工作在一个叫dev的分支机构:

1
2
3
4
git checkout dev
git merge --strategy=ours master
git checkout master
git merge dev

合并选项--strategy=ours旨在取代分支机构的旧发展历史(引用)。


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

1
git checkout -B master anotherbranch

这比删除和重新创建保留分支设置和重新触发具有优势。

如果在你的历史中有一些保留毫无价值的承诺的管理要求,那么请遵循git merge -s ours master@{1}。我喜欢这个序列,因为它会生成一个异常的合并消息,它会提醒扫描--oneline日志的人合并是异常的。