我在一个Git代码库中有一个非常过时的master
分支。
我的所有工作都在另一个分支中完成。
最佳的合并方式是什么?
我不关心master
中的任何内容,它已经过时了。
我在一个Git代码库中有一个非常过时的master
分支。
我的所有工作都在另一个分支中完成。
最佳的合并方式是什么?
我不关心master
中的任何内容,它已经过时了。
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
命令来完成。
假设你的工作在一个名为 dev
的分支中:
git checkout dev
git merge --strategy=ours master
git checkout master
git merge dev
合并选项--strategy=ours
旨在用于取代旧的侧支开发历史(引用)。git merge strategy=ours
解决,但我认为这种方法忽略了问题的重点。我理解这个问题是“我没有遵循良好的实践,基本上主干无用,而我不想从主干中获得任何东西”,对于单人项目来说很普遍。
git push -f origin branch_ive_been_working_for_months:master
完全用你的远程分支替换你的远程主干。然后,在本地检出主干之后,只需执行 git pull origin master
就是我认为直接回答问题的解决方案。git checkout -B master anotherbranch
相较于删除并重新创建,这种方法保留了您的分支设置和reflogs。
如果有一些行政要求需要保留历史记录中无用的提交,请在此之后使用git merge -s ours master@{1}
。我更喜欢这个顺序,因为它会生成一个不寻常的合并消息,这将提醒扫描--oneline
日志的人合并是不寻常的。
git checkout master && git pull && git merge <your-branch>
没有成功吗? - Makoto