繁体   English   中英

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

[英]Overwrite everything in master with another branch in git

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

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

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

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

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

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

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

git push -f origin master 

注意:这特别适用于替换整个master分支并将旧master扔掉,正如标题所暗示的那样。 否则,您应该可以使用git merge master --strategy=ours

假设您的工作在一个名为dev的分支中:

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

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

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

git checkout -B master anotherbranch

与保留分支设置和引用日志的删除和重新创建相比,这具有优势。

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

git merge strategy=ours解决方案回答了很多这些问题,但我认为它没有抓住问题的重点。 我将这个问题解释为“我没有遵循良好的实践,基本上大师无用,我不想要大师的任何东西”。 常见于个人项目。

git push -f origin branch_ive_been_working_for_months:master master 用你的远程分支完全替换你的远程 master。 然后,在本地签出 master 之后, git pull origin master是直接回答问题 IMO 的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM