从现有git仓库切换到另一个仓库

1006 字
5 分钟
从现有git仓库切换到另一个仓库

从现有仓库切换到另一个仓库#

方法一:添加新的远程仓库#

此方法会保留原有的 origin(指向 url1),同时新增一个指向 url2 的远程仓库。这样本地仓库就可以同时与两个远程仓库进行通信。

步骤 1:检查本地仓库配置#

Terminal window
git remote -v

预期输出类似:

Terminal window
origin url1 (fetch)
origin url1 (push)

步骤 2:添加新的远程仓库#

为新的仓库 url2 指定名称,例如 new_origin:

Terminal window
git remote add new_origin url2

注意: 将 new_origin 替换为自定义名称,将 url2 替换为新仓库的实际 URL。

步骤 3:验证配置#

再次执行 git remote -v,确认两个远程仓库均已配置:

Terminal window
$ git remote -v
new_origin url2 (fetch)
new_origin url2 (push)
origin url1 (fetch)
origin url1 (push)

步骤 4:推送代码到新仓库#

将代码推送到新的远程仓库 (new_origin):

推送当前分支(如 main 或 master):

Terminal window
# 假设主分支为 'main'
git push new_origin main

推送所有本地分支:

Terminal window
git push new_origin --all

推送所有标签:

Terminal window
git push new_origin --tags

设置默认上游分支:

若希望未来在 main 分支执行 git push 时默认推送到 new_origin:

Terminal window
# -u 参数表示 --set-upstream,将本地 main 分支关联到 new_origin/main
git push -u new_origin main

方法二:修改现有 origin 配置#

如果不再需要 url1,只需将 origin 指向 url2,可采用此方法。

步骤 1:修改 origin 的 URL#

Terminal window
git remote set-url origin url2

步骤 2:验证修改#

执行 git remote -v,确认 origin 已指向 url2:

Terminal window
$ git remote -v
origin url2 (fetch)
origin url2 (push)

步骤 3:推送代码#

常规推送操作将自动指向 url2:

Terminal window
# 推送 main 分支并设置追踪
git push -u origin main
# 推送所有分支
git push --all
# 推送所有标签
git push --tags

git status 显示机制说明#

git status 命令仅比较「本地工作目录」与「本地 Git 仓库的最后一次提交」之间的差异。

该命令不会检查远程仓库状态,无论远程仓库为空、过时还是新仓库。

执行 git status 时,Git 在本地进行以下比较:

  1. 工作目录:实际可见且可编辑的文件
  2. 本地快照 (HEAD):最后一次 git commit 时存储的版本

“modified” 状态表示:工作目录中的文件与最后一次提交的版本存在差异。

此过程完全在本地完成,无需网络连接,也不涉及远程仓库通信。

后续提交操作会将所有本地提交推送到远程仓库。

确定主分支的方法#

方法一:检查当前所在分支#

执行 git branch 查看所有本地分支列表:

Terminal window
$ git branch
feature-A
* main
hotfix-123
  • 标有星号 * 的分支(示例中为 main)为当前所在分支
  • 在未主动切换分支的情况下,当前分支通常为主分支

方法二:检查远程仓库默认分支#

此方法显示配置的 origin 仓库自身认定的默认分支。

执行 git remote show origin:

Terminal window
$ git remote show origin
* remote origin
Fetch URL: url2
Push URL: url2
HEAD branch: master <---- 默认分支标识
Remote branches:
main tracked
Local branch configured for 'git pull':
main merges with remote main
Local ref configured for 'git push':
main pushes to main (up to date)

查看 HEAD branch: 行显示的名称(示例中为 master),此为远程仓库的默认分支,通常即为主分支。

Terminal window
* remote origin
Fetch URL: http://xxx.git
Push URL: http://xxx.git
HEAD branch: (unknown)
Remote branch:
refs/remotes/origin/master stale (use 'git remote prune' to remove)
Local branch configured for 'git pull':
master merges with remote master

HEAD branch: (unknown) 表示新仓库中不存在任何分支,Git 无法确定默认分支。

从输出信息可确认本地主分支为 master:

  1. Remote branch: ... origin/master stale:表示本地曾追踪名为 origin/master 的分支(来自 url1)
  2. Local branch configured for 'git pull': master merges with remote master:明确显示本地存在 master 分支

将本地 master 分支推送到空的远程仓库 origin:

Terminal window
git push -u origin master

此命令执行两个操作:

  1. git push origin master:将本地 master 分支的所有提交推送到 origin(即 url2)
  2. -u(或 --set-upstream):建立追踪关系,配置本地 master 分支与 origin/master 的对应关系

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

从现有git仓库切换到另一个仓库
https://sukksa.github.io/posts/cong-xian-you-git-cang-ku-qie-huan-dao-ling-yi-ge-cang-ku/
作者
Sukksa
发布于
2025-11-26
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
将 Hexo 提交到仓库
git这是一个 Hexo 双仓库管理问题(一个是用于存放 静态网页 的 xxx.github.io ,一个是用于存放 源代码 的 hexo code )。 提交不上去是因为 Git 配置冲突 或者 .gitignore 设置不当 造成的。
2
从零开始的npm教程
gitnpm 是 Node.js 的标准包管理器,它允许你下载别人写好的代码(称为“包”或 package)直接在你的项目中使用,同时也帮助你管理这些代码之间的 依赖关系 (即你的项目运行所需要的外部代码)。 package.json 是 Node.js 项目中最重要的文件,如果没有它,npm 就不知道你…
3
如何移除 GitHub 中的 contributors
git如果你在某次 commit 时,忘记 git config 设置自己的 username 和 email 了,发现仓库主页 contributors,多了一个contributor,那么如何才能移除呢? 虽然官方没有移除contributor的办法,但是我们可以替换掉所有的username和emai…
4
react-hooks
reactReact 的核心是组件。v16.8 版本之前,组件的标准写法是类(class)。 任何一个组件,可以用类来写,也可以用钩子来写。下面是类的写法。 再来看钩子的写法,也就是函数。 官方推荐使用钩子(函数),而不是类。因为钩子更简洁,代码量少,用起来比较"轻",而类比较"重"。而且,钩子是函数,更符合…
5
关于 cesium 在 micro-app 下无法显示的问题
cesium基座:vite + vue3 子应用:vite + vue3 micro app v1.0.0 rc.29, cesium v1.135 子应用包含一个 cesium map,在基座打开子应用时,cesium 无法显示地图,但是 sence, sky box, model 都能正常显示,唯独地图不显…
随机文章随机推荐
Profile Image of the Author
Sukksa
记录前端学习与日常
公告
博客刚刚上线,内容还在慢慢补齐。欢迎随便逛逛~
分类
标签
最新动态
站点统计
文章
69
分类
16
标签
17
总字数
178,517
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录