【Git】| 将拉下来的代码上传到自己的 Gitee 仓库(手把手教学)

从别人的 Gitee 仓库拉下代码,想把它变成自己的仓库继续开发?本文手把手教你修改远程地址、推送分支,并解决常见的分支和冲突问题。

目录

一、前言

二、准备工作

三、创建自己的空仓库

四、修改本地仓库的远程地址

五、查看本地分支并推送

[1. 查看本地所有分支](#1. 查看本地所有分支)

[2. 如果遇到 error: src refspec main does not match any](#2. 如果遇到 error: src refspec main does not match any)

六、解决推送被拒绝(远程已有内容)

方法一:合并远程内容(推荐,保留远程文件)

方法二:强制推送(用本地代码覆盖远程)

[七、让 master 分支与 dev 分支内容一致](#七、让 master 分支与 dev 分支内容一致)

八、常见问题与注意事项

[1. 推送时提示权限错误](#1. 推送时提示权限错误)

[2. 分支名与默认分支不一致](#2. 分支名与默认分支不一致)

[3. 如何推送其他分支](#3. 如何推送其他分支)

[4. 关于 main 和 master](#4. 关于 main 和 master)

九、总结


一、前言

在开发中,我们经常从开源项目或团队仓库克隆代码,然后想把它迁移到自己新建的 Gitee 仓库中继续开发。但直接 git push 通常会遇到各种错误,比如:

error: src refspec main does not match any

! [rejected] dev -> dev (fetch first)

本文以实际场景为例,帮你一步步完成代码迁移,并解释每个操作的含义。


二、准备工作

假设你已经从别人的仓库克隆了代码,并且本地已有完整项目:

bash 复制代码
git clone https://gitee.com/原用户/原仓库.git
cd 原仓库

现在你想把这个代码推送到自己的 Gitee 空仓库。


三、创建自己的空仓库

  1. 登录 Gitee,点击右上角 "+" → "新建仓库"。

  2. 填写仓库名称,不要勾选"使用 Readme 文件初始化仓库",保持空仓库,否则后续就需要强制覆盖仓库。

  3. 创建完成后,复制仓库的 HTTPS 或 SSH 地址,例如 https://gitee.com/你的用户名/新仓库.git。


四、修改本地仓库的远程地址

查看当前远程地址:

bash 复制代码
git remote -v
# 如果显示原仓库的 URL,需要修改

将 origin 指向你自己的新仓库:

bash 复制代码
git remote set-url origin https://gitee.com/你的用户名/新仓库.git

再次确认:

bash 复制代码
git remote -v
# 应该显示你的新仓库地址

五、查看本地分支并推送

1. 查看本地所有分支

bash 复制代码
git branch

# 输出示例:
# * dev
#   master
#   stu

* 表示当前所在分支。如果你打算推送 dev 分支,直接执行:

bash 复制代码
git push -u origin dev
  • -u 会建立本地 dev 与远程 dev 的追踪关系,以后只需 git push 即可。

2. 如果遇到 error: src refspec main does not match any

这个错误说明你本地没有 main 分支(可能只有 dev 或 master)。解决方法是推送你实际存在的分支,例如:

bash 复制代码
git push -u origin dev   # 推送 dev 分支

六、解决推送被拒绝(远程已有内容)

如果你的新仓库创建时不小心加了 README 或许可证,远程仓库就有了一个初始提交。此时推送会报错:

! rejected dev -> dev (fetch first)

error: failed to push some refs to ...

因为远程和本地历史不相关。解决方法有两种:

方法一:合并远程内容(推荐,保留远程文件)

bash 复制代码
git pull origin dev --allow-unrelated-histories
  • --allow-unrelated-histories 允许合并两个无关的提交历史。

  • 如果出现冲突,手动解决后 git add . 并 git commit。

  • 最后推送:

bash 复制代码
git push -u origin dev

方法二:强制推送(用本地代码覆盖远程)

如果你不需要远程的初始文件(如 LICENSE),可以直接强制覆盖:

bash 复制代码
git push -f origin dev

⚠️ 注意:强制推送会删除远程的提交历史,请确保远程没有重要内容。


七、让 master 分支与 dev 分支内容一致

很多项目习惯用 master 作为稳定分支,而 dev 是开发分支。如果在项目初期,你想让 master 与 dev 内容相同,可以这样做:

  1. 确保本地 dev 是最新的:

    bash 复制代码
    git checkout dev
    git pull origin dev   # 如果已推送过,可省略
  2. 基于 dev 创建或重置 master 分支:

    bash 复制代码
    git checkout -b master dev      # 如果本地没有 master,创建并切换
    # 或者,如果已有 master,则重置它:
    git checkout master
    git reset --hard dev
  3. 强制推送到远程 master:

    bash 复制代码
    git push -f origin master

现在你的远程仓库中,master 和 dev 内容一致了。


八、常见问题与注意事项

1. 推送时提示权限错误

  • 使用 HTTPS 地址时,可能需要输入用户名和密码(Gitee 现在建议使用私人令牌代替密码)。

  • 推荐配置 SSH 公钥,使用 SSH 地址推送。

2. 分支名与默认分支不一致

  • 第一次推送后,Gitee 会将推送的分支设为默认分支。你可以随时在仓库 设置 → 仓库管理 中修改默认分支。

3. 如何推送其他分支

  • 分别推送即可:

    bash 复制代码
    git push origin stu  # 推送名为的stu 分支

4. 关于 main 和 master

  • Git 新仓库默认主分支名称已改为 main,但很多旧项目仍使用 master。推送时根据你本地实际分支名选择即可。

九、总结

通过以上步骤,你可以轻松将拉取的项目代码上传到自己的 Gitee 仓库,并处理好分支、历史冲突等问题。如果还有其他问题,欢迎在评论区留言交流。

相关推荐
行者-全栈开发2 小时前
【码动四季·秋】从 commit 到发版全自动:Conventional Commits + semantic-release 发布流水线实战
git·ci/cd·自动化发布·atomgit·semantic-releas·语义化版本自动化·git 提交规范落地
Flynt1 天前
Claude Code 103 秒删掉 4.8 万个文件之后,我把自己的仓库"删"了一遍:git 能救的比你想的少
git·ai编程·claude
csdn2015_1 天前
git 可以修改已经push上去的commit说明吗
git
智碳能碳管理平台2 天前
碳排放核算软件如何支撑工业能碳大数据与节能优化
gitee·能碳管理系统·智碳能碳管理平台·企业能碳管理系统·碳排放核算软件·绿色工厂申报saas·能碳管理 ems
MinggeQingchun2 天前
Git - 令牌登录
git
xhy_07072 天前
Git 合并冲突怎么解决?用 AI 处理冲突的流程、Prompt 和 4 个易错点
人工智能·git·安全·prompt·ai编程·代码复审
yubang32231112 天前
Android保活sdk
android·gitee·保活
cakeism8252 天前
金融行业 DevOps 平台推荐:2026年主流方案对比与 Gitee 选型解析
金融·gitee·devops
Zhou1411362 天前
Git_02_GitLab协作与CI_CD
git·ci/cd·gitlab