git更改当前项目的远程仓库,保留原始仓库提交记录提交到新仓库

在开发过程中,有时需要将当前项目的远程仓库切换到另一个新的远程仓库,同时保留所有原始的提交记录。以下是详细的步骤和最佳实践,确保你能够顺利完成这一操作。

更改当前项目的远程仓库

1.查看当前的远程仓库

  • 确认当前项目的远程仓库地址。
bash 复制代码
     git remote -v

2.更改远程仓库地址

  • 使用 git remote set-url 命令直接更改远程仓库地址。将 <新仓库的URL> 替换为你要切换到的新仓库的 URL
bash 复制代码
     git remote set-url origin <新仓库的URL>

3.验证更改

  • 再次查看远程仓库地址,确保更改成功。
bash 复制代码
     git remote -v

4.推送代码到新的远程仓库

  • 如果你需要将本地分支推送到新的远程仓库,可以使用以下命令。
  • main,请替换为实际的分支名称(例如 master)。
bash 复制代码
     git push -u origin main

如果报错:

原因: 表明本地没有名为 release 的分支。这可能是由于你在创建或切换分支时遇到了问题。

bash 复制代码
error: src refspec release does not match any
error: failed to push some refs to 'http://10.11.1.6/xm/poc/xxx/i-tax/text.git'

解决方案

1.检查本地分支

  • 首先,确认当前有哪些本地分支。
bash 复制代码
     git branch

2.创建并切换到 main 分支

  • 如果 main 分支不存在,可以创建并切换到该分支。
bash 复制代码
     git checkout -b release

3.推送 main分支到远程仓库

  • 将新创建的 main分支推送到远程仓库,并设置上游分支。
bash 复制代码
     git push -u origin main

4.从远程仓库拉取 main分支(如果远程已有)

  • 将新创建的 main分支推送到远程仓库,并设置上游分支。
bash 复制代码
     git fetch origin
     git checkout main

如果报错:non-fast-forward

bash 复制代码
 ! [rejected]        main-> main(non-fast-forward)
error: failed to push some refs to 'http://10.1.1.16/xm/poc/ceshi.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

原因 :

  • 本地的 main分支落后于远程的 main分支。Git 拒绝了推送操作,因为它不是一个快进(fast-forward)更新。

你需要先将远程仓库的最新更改拉取到本地,解决可能的冲突,然后再推送你的更改。以下是具体步骤:

1.拉取代码

  • --allow-unrelated-histories

可以允许 Git 在两个没有共同祖先的分支之间进行合并。这通常用于首次将一个独立开发的仓库与另一个仓库合并,或者在某些特殊情况下处理历史记录不相关的分支。

这样远程分支代码就会拉取到本地分支。

bash 复制代码
git pull origin release --allow-unrelated-histories

如果是新仓库一版都是 README.md 文件冲突,拉取下拉解决冲突。

2.解决冲突---重新提交

  • 提交
bash 复制代码
git add .
  • 提交解决后的更改
bash 复制代码
git commit -m "解决冲突"
  • 再次推送更改
bash 复制代码
git push
  • 强制推送(不推荐)

如果你确定本地的更改应该覆盖远程的更改(例如,远程仓库中的内容有问题或不需要保留),你可以使用强制推送。但请注意,这可能会导致数据丢失或覆盖其他开发者的更改,因此请谨慎使用:

bash 复制代码
git push --force origin main
相关推荐
SiYuanFeng1 分钟前
新手学Git:如何把本地 Git 项目上传到 GitHub
git·github
前端若水2 小时前
git回退并合并分支操作
git
程序员鱼皮7 小时前
Git WorkTree 是什么?凭什么能让 AI 编程效率翻倍?
git·ai·程序员·编程·ai编程
懵逼的小黑子9 小时前
git与远程仓库创建连接
git
前端若水10 小时前
Git 撤销与恢复完全指南(超级详细版)
大数据·git·elasticsearch
golang学习记10 小时前
Git 2.54 来了,这个新命令让我终于敢重写历史了
git·后端
其实防守也摸鱼10 小时前
AWVS下载和安装保姆级教程
linux·服务器·git
前端若水10 小时前
Git 可以做的所有操作(完整分类)
大数据·git·elasticsearch
叹一曲当时只道是寻常10 小时前
Reference 工具安装与使用教程:一条命令管理 Git 仓库引用与知识沉淀
人工智能·git·ai·开源·github
前端若水11 小时前
Git 仓库管理命令完全指南(超级详细版)
大数据·git·elasticsearch