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
相关推荐
李少兄8 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
先跑起来再说14 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道17 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力17 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠20 小时前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东21 小时前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应1 天前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应1 天前
Git本地仓库命令补充
git
sun0077001 天前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎11 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份