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
相关推荐
苏-言2 小时前
Git进阶之旅:.gitignore 文件
git
maply3 小时前
VSCode 中 Git 扩展的使用详解
ide·git·vscode·扩展
打破砂锅问到底00710 小时前
技术周总结 01.13~01.19 周日(Spring Visual Studio git)
git·spring·visual studio
苏-言21 小时前
Git进阶之旅:Git 配置信息 Config
git
画船听雨眠aa2 天前
git仓库
git
悬铃木下的青春2 天前
【Git】使用笔记总结
笔记·git
九月十九2 天前
Git 的基本概念和使用方式
git
小雨凉如水2 天前
工作总结:git篇
git
画船听雨眠aa3 天前
git相关命令
git
嵌入式小能手3 天前
移植前准备之git管理内核源码
git