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 |
。