git 我的主分支错了,我想用另一个分支重写它,我怎么能这样做呢?

mwg9r5ms  于 2023-04-10  发布在  Git
关注(0)|答案(2)|浏览(104)

我的远程仓库(github)的主分支是完全错误的,我已经把好的代码推到了另一个名为kitos的分支上,这与主分支的代码完全不同。我想“删除”主分支的内容,把kitos的内容放在main里面,我不想要主分支上的任何代码,只想把kitos的内容放在main内容上。什么是最简单和正确的方法来改变这一点?

izj3ouym

izj3ouym1#

我会按以下步骤处理。
1.把“kitos”作为主要分支。
1.删除名为“main”的分支
1.将“kitos”重命名为“main”

6yoyoihd

6yoyoihd2#

有很多方法可以解决这种情况,这里是(IMO)两个最简单/最常见的:

软复位推流

可以说是最安全的选择。
保留origin/main历史,使本地main分支成为您想要的分支,然后正常推送:

$ git fetch
$ git checkout main
$ git pull
$ git reset --soft origin/kitos
$ git commit -m "Make match origin/kitos branch"
$ git push

这将:
1.确保你的本地参考资料是最新的
1.在本地查看主要分支
1.确保mainorigin/main匹配
1.使工作副本匹配origin/kitos而不更改历史记录
1.提交的结果👆
1.将此提交推送到origin/main
这将维护origin/main中的现有历史,并通过“正常”提交实现所需的结束状态;这是一个合适的做法,例如,如果存储库只为您而您决定用另一个替代一个实验性解决方案。

硬复位和强制推送

忽略origin/main历史,使本地main分支成为您想要的分支,然后覆盖远程分支:

$ git fetch
$ git checkout main
$ git reset --hard origin/kitos
$ git push --force-with-lease

这将:
1.确保你的本地参考资料是最新的
1.在本地查看主要分支
1.重写历史记录,使本地主分支与origin/kitos匹配
1.将origin/main的历史记录替换为origin/kitos的历史记录
这将删除origin/main中现有的历史记录,用origin/kitos的历史记录替换它。使用此选项时要小心,如果有任何其他贡献者或克隆者,重写历史记录可能会有问题或令人困惑,如果有疑问,google 'is force push bad'或类似的查找引用like this one:)。

相关问题