我有一个完全过时的旧开发分支。我不想删除它,但我想用主分支完全替换其内容。这意味着,我希望 dev_branch = master
我试过:
git merge -s ours dev_branch
但没有用...
答案1
master
如果您想要中的所有更改dev_branch
,那么:
git checkout dev_branch
git reset --hard master
这仅当其他人尚未克隆存储库时才有效。
如果你已经dev_branch
推送到远程,你必须执行以下操作:
git push --force
强制推送到远程。警告:这将破坏之前克隆过该分支的人的分支历史记录!然后,其他人将不得不执行此操作git pull --rebase
以dev_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
答案2
为什么要这么做?如果不再需要,您可以删除该分支(但为什么?分支几乎不花钱。)。或者您可以重命名它:
git branch -m dev_branch obsolete_dev
或者你可以这样做来删除它:
git branch -D dev_branch
现在创建一个新的分支master
(假设您已经在该分支上):
git 分支 dev_branch
查看git branch --help
更多选项(设置遥控器和所有爵士乐)。
如果您现在有新的分支,则必须与任何对等存储库同步。
避免麻烦的最佳方法:拥有一个“活跃”的开发分支,如果它过时了,就放弃它并创建一个新的。这样就不会丢失历史记录(有时可能会证明是至关重要的)。
例如,为每个主要版本建立一个分支,在那些修复版本错误的分支上进行开发,主版本继续前进。使用 cherry-pick 和可能的合并将修复移植到旧版本。