Git:有可能将分支转换为主分支,忽略任何合并冲突吗?


Git: possible to make a branch into the master, ignoring any merge conflicts?

除了主站,我还有一个分支机构的Git回购。我想让那个分支成为主分支——完全覆盖主分支。显然,我可以进行合并,但这将导致许多冲突,而且当我知道我总是希望从附加分支(而不是主分支)获取文件时,似乎需要做大量的工作来解决它们。

是否可以将分支转换为master,或者进行合并,并告诉git始终支持一个分支的文件而不是另一个分支的文件?

事先谢谢!


您可以使用重置命令一次完成此操作:

1
2
git checkout master
git reset --hard topicBranch

硬重置将使当前分支指向给定的提交。这将丢弃主服务器上尚未在主题分支上的任何提交;它们将不会被合并。

这里同样适用于Rebase的警告:如果已经将主分支推送到与其他开发人员共享的任何存储库中,则不要这样做。


如果您是访问此存储库的唯一开发人员,并且它没有与其他开发人员共享,那么创建新的分支非常容易。开始之前,请确保存储库是干净的(所有修改都已签入当前分支)。

备份旧的主分支:

1
2
git checkout master
git branch oldMaster

删除旧主控形状并创建新主控形状:

1
2
3
git checkout topicBranch
git branch -D master
git branch master

如果托管在远程服务器上的存储库上,则需要更新远程服务器:

1
git push --force remoteName master:master

重要提示:如果其他开发人员一直在从您的存储库中提取数据,那么在他们下次从您的repo中提取数据或推送到他们的repo中时,此方法将为他们生成错误。


我仍然不是git的专家,但看起来您需要rebase命令:

1
2
3
git checkout branch_name
git rebase master
git checkout master

看起来这会自动将所有更改合并到您的主控形状中,此时您的分支与主控形状不同,然后将当前更改重新应用到这些更改的主控形状上(这样您就不必合并)。

当然,如果您只是想完全覆盖master,我认为如果使用force选项,您应该能够将分支推送到master存储库中。像这样:

1
git push --force origin branch_name

然后,您的远程将拥有来自主分支中分支的所有更改,您可以将其拉出…

1
2
git checkout master
git pull --force origin