如何使用 master 覆盖 Git 中的分支

如何使用 master 覆盖 Git 中的分支

我有一个完全过时的旧开发分支。我不想删除它,但我想用主分支完全替换其内容。这意味着,我希望 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 --rebasedev_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 和可能的合并将修复移植到旧版本。

相关内容