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
相关推荐
我会冲击波1 小时前
功能分支落后于develop太多,需要把开发分支合并到功能分支吗?
git·intellij idea
C++ 老炮儿的技术栈15 小时前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
余很多之很多19 小时前
命令行和neovim的git操作软件-lazygit
git
猫头虎20 小时前
GitHub下载教程:2025年最新详解从GitHub上传、下载文件、子目录与完整项目【图文教程】
git·svn·gitee·开源·github·gitea·gitcode
i建模1 天前
将远程 main 分支同步到 develop 分支的完整指南
git
即使再小的船也能远航1 天前
【Git】实用Git操作指南:从入门到高效协作
git
<但凡.2 天前
Git 完全手册:从入门到团队协作实战(4)
git·bash
SugarPPig2 天前
Git 创建一个完全没有提交历史的 master 分支
git
lb29173 天前
git的使用,推送仓库github
git·github
躲在云朵里`3 天前
Git的使用
大数据·git·elasticsearch