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
相关推荐
Jooolin9 小时前
【编程史】Git是如何诞生的?这可并非计划之中...
linux·git·ai编程
Lw老王要学习14 小时前
VScode 使用 git 提交数据到指定库的完整指南
windows·git·vscode
去旅行、在路上14 小时前
Git & Svn
git·svn
abcnull15 小时前
github中main与master,master无法合并到main
git·github
养意20 小时前
git提交代码和解决冲突修复bug
git·bug
码农黛兮_461 天前
Git 常用命令大全
git
一弓虽1 天前
git 学习
git·学习
疯狂的沙粒2 天前
如何通过git命令查看项目连接的仓库地址?
大数据·git·elasticsearch
qq_254617772 天前
Gerrit+repo管理git仓库,如果本地有新分支不能执行repo sync来同步远程所有修改,会报错
git
π大星星️2 天前
Git分布式版本控制工具
分布式·git