最近访客
暂无访客
暂无访客

如何将别人的Git仓库推送到你的仓库

从他人仓库拉取代码后,上传到你自己的 Git 仓库(Gitee/GitHub) 的核心逻辑是:移除原远程仓库关联 → 关联你的仓库 → 推送代码,全程分「保留提交记录」和「清空记录(全新上传)」两种场景,适配不同需求,步骤如下(Windows/macOS 通用):

前置准备

  1. 已拉取他人代码到本地(如 git clone https://github.com/xxx/dmin.git);
  2. 已在你的 Gitee/GitHub 账号创建空仓库(建议不勾选「初始化 README」,避免冲突);
  3. 本地 Git 已配置你的账号(git config --global user.name/email)。

场景 1:保留原代码的提交记录(推荐,可回溯历史)

适合需要保留原作者的提交记录、便于后续同步更新的场景,完整步骤:

Step 1:进入本地拉取的代码目录

# Windows 示例(进入 admin 目录)
F:
cd Project/admin

# macOS 示例
cd ~/Desktop/Project/admin

Step 2:查看并移除原远程仓库关联

# 查看当前关联的远程仓库(默认是 origin,指向原作者仓库)
git remote -v
# 输出示例:
# origin  https://github.com/xxx/admin.git (fetch)
# origin  https://github.com/xxx/admin.git (push)

# 移除原远程仓库关联
git remote rm origin

# 验证:再次执行 git remote -v,无输出则移除成功

Step 3:关联你的 Git 仓库

复制你自己仓库的 HTTPS 地址(如 Gitee 仓库页面 → 克隆 / 下载 → 复制 HTTPS):

# 关联你的仓库(替换为你的仓库地址)
git remote add origin https://gitee.com/你的用户名/admin.git

# 验证关联:git remote -v 应显示你的仓库地址

Step 4:推送代码到你的仓库

# 首次推送(-u 绑定分支,main 是默认分支,若原代码是 master 则替换)
git push -u origin main

# 若提示「fatal: the current branch main has no upstream branch」:
# 强制推送(确保你的仓库是空的,无冲突)
git push -u origin main --force

输入你的 Git 账号 / 密码(或私人令牌),推送成功后,你的仓库就会出现拉取的代码,且保留所有原提交记录。


场景 2:清空提交记录(全新上传,仅保留代码)

适合不想保留原作者提交记录、将代码作为「全新项目」上传的场景:

Step 1:进入代码目录,初始化全新 Git 仓库

# 进入代码目录(同上)
cd ~/Desktop/Project/admin

# 删除原 Git 配置(清空所有提交记录)
rm -rf .git  # macOS/Linux
# Windows 用:rd /s /q .git

# 重新初始化 Git 仓库
git init

Step 2:配置 .gitignore(可选,清理无关文件)

若原代码无 .gitignore,新建并添加规则(如 Go 项目排除编译产物、敏感配置)

# macOS
touch .gitignore

# Windows
echo > .gitignore

编辑 .gitignore(参考前文苹果签名系统的规则)。

Step 3:提交代码到本地全新仓库

# 添加所有文件
git add .

# 提交(备注为你的项目初始化)
git commit -m "初始化系统"

Step 4:关联并推送到你的仓库

# 关联你的仓库
git remote add origin https://gitee.com/你的用户名/admin.git

# 推送(首次)
git push -u origin main

推送后,你的仓库仅保留本次提交记录,原作者的历史记录被清空。

场景 3:后续同步原作者代码(可选)

若想后续从原作者仓库拉取更新,再同步到你的仓库,可添加「上游仓库」:

# 1. 添加原作者仓库为 upstream(仅需执行一次)
git remote add upstream https://github.com/xxx/admin.git

# 2. 拉取原作者的最新代码
git pull upstream main

# 3. 推送到你的仓库
git push origin main

常见问题解决

1. 推送失败:error: failed to push some refs to …

原因:你的仓库非空(如初始化了 README/ LICENSE),和本地代码冲突。解决:

# 先拉取你的仓库内容并合并(保留你的 README)
git pull origin main --allow-unrelated-histories

# 再推送
git push -u origin main

2. 权限不足:remote: You do not have permission to push to this repository

原因:关联的仓库地址错误(不是你的仓库),或账号无权限。解决:

  • 检查 git remote -v,确保地址是你的仓库;
  • 确认 Git 配置的用户名 / 邮箱和仓库账号一致(git config --global --list)。

3. macOS/Windows 命令差异

  • 删除 .git 目录:
    • macOS/Linux:rm -rf .git
    • Windows(CMD):rd /s /q .git
    • Windows(Git Bash):rm -rf .git

4. 分支名称不匹配(main vs master)

原代码分支可能是 master(旧版 Git),你的仓库默认是 main,解决:

# 将本地 master 分支重命名为 main
git branch -M main

# 再推送
git push -u origin main

总结

核心步骤(通用):

  1. 移除原远程仓库关联(git remote rm origin);
  2. 关联你的仓库(git remote add origin 你的地址);
  3. 推送代码(git push -u origin main)。

按需选择:

  • 保留历史记录:直接改远程关联后推送;
  • 全新上传:删除 .git 重新初始化后提交推送;
  • 后续同步原代码:添加 upstream 仓库拉取更新。
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容