【Git实战】如何将本地已有项目关联并推送到指定的远程仓库(保姆级教程)

【Git实战】如何将本地已有项目关联并推送到指定的远程仓库(保姆级教程)

在日常开发中,我们经常遇到这样一种情况:代码已经在本地写了很多了,文件夹里并没有 .git 目录,此时我们在 GitHub/Gitee/GitLab 上创建了一个新的仓库(可能手滑顺便勾选了创建 README.md 或 .gitignore),现在想要把本地的代码推送到这个远程仓库中,并由 Git 进行管理。

本文将详细演示如何将本地现有文件夹与远程仓库关联,拉取远程文件,最后将本地项目完美提交的完整流程。


场景描述

  • 本地: 有一个项目文件夹 MyProject,里面有代码,但没有执行过 git init
  • 远程: 新建了一个仓库(Repository),并且仓库里已经有一些文件(比如 README.mdLICENSE)。
  • 目标: 将本地 MyProject 变成 Git 仓库,拉取远程的 README.md,然后把本地代码提交上去。

操作步骤

第一步:初始化本地仓库

首先,进入你的本地项目文件夹,打开终端(Terminal 或 Git Bash)。

bash 复制代码
# 进入项目目录(请根据实际路径修改)
cd /path/to/your/MyProject

# 初始化 git 仓库
git init

执行完毕后,项目目录下会多出一个隐藏文件夹 .git,这代表本地仓库已初始化完成。

第二步:关联远程仓库

使用 git remote add 命令将本地仓库与远程仓库建立连接。

bash 复制代码
# origin 是远程仓库的别名(习惯上默认叫 origin)
# <Your-Repository-URL> 换成你的仓库地址(HTTPS 或 SSH 均可)
git remote add origin https://gitee.com/username/my-project.git

第三步:拉取远程仓库内容(关键步骤)

这一步是很多新手容易报错的地方。

如果远程仓库是空的,直接 Push 即可。但如果远程仓库里已经有文件(如 README.md),我们需要先把它 Pull 下来。

此时直接执行 git pull origin master 通常会报错:
fatal: refusing to merge unrelated histories (拒绝合并无关的历史)。

原因: 本地仓库和远程仓库是两个独立生成的"历史",Git 认为它们没有血缘关系,所以默认不让合并。

解决方案: 加上 --allow-unrelated-histories 参数。

bash 复制代码
# 拉取远程代码,并允许合并无关历史
# 注意:此时分支名可能是 master 也可能是 main,请根据远程仓库实际情况调整
git pull origin master --allow-unrelated-histories

执行后,远程的 README.md 就会出现在你的本地文件夹中。

第四步:处理 .gitignore(可选但推荐)

在提交代码之前,建议在根目录下创建一个 .gitignore 文件,把不需要上传的文件(如 node_modules.idea*.logdist 等)过滤掉。

如果没有这个文件,可以手动新建:

bash 复制代码
touch .gitignore

然后在里面写入你想忽略的文件或文件夹规则。

第五步:暂存与提交本地代码

现在将本地的所有代码添加到暂存区,并提交到本地仓库。

bash 复制代码
# 将当前目录下所有更改添加到暂存区
git add .

# 提交到本地仓库,并附带注释
git commit -m "Initial commit: 将本地项目上传到远程仓库"

第六步:推送到远程仓库

最后,将本地所有的提交推送到远程仓库。

bash 复制代码
# -u 表示将本地分支与远程分支关联,下次直接输入 git push 即可
# 同样注意分支名是 master 还是 main
git push -u origin master

总结

整套流程的命令汇总如下(方便复制):

bash 复制代码
# 1. 初始化
git init

# 2. 关联远程(替换你的地址)
git remote add origin https://your-repo-url.git

# 3. 拉取远程文件(关键:允许不相关历史合并)
git pull origin master --allow-unrelated-histories

# 4. 添加全部文件
git add .

# 5. 提交
git commit -m "init project"

# 6. 推送
git push -u origin master

常见问题排查

  1. 报错 error: src refspec master does not match any

    • 原因:本地目前没有任何提交(commit),或者本地分支名不叫 master(现在的 Git 版本可能默认叫 main)。
    • 解决:先执行 git commit,然后检查当前分支名(git branch),如果是 main,则将命令中的 master 改为 main
  2. Pull 的时候出现 Vim 编辑界面

    • 原因:Git 在自动合并时需要你填写合并日志。
    • 解决:
      • i 进入编辑模式(可选,默认直接按 ESC 也可以)。
      • ESC 退出编辑模式。
      • 输入 :wq 然后回车(保存并退出)。

作者提示:

养成良好的 Git 习惯,在 Push 之前先 Pull,可以避免很多冲突。如果你觉得这篇文章有用,欢迎点赞收藏!

相关推荐
小锋学长生活大爆炸10 小时前
【福利】最新免费领取云服务器和虚拟主机攻略
网络·github
码流怪侠12 小时前
GitHub 2026年7月热门项目全景盘点:Agent Skills 生态炸裂,开源世界正在重写规则
程序员·github·agent
我叫黑大帅12 小时前
git 的 NFD 与 NFC 有什么区别?为什么我有个文件在 NFC 中间不会被当成改动,在 NFD 中就会当成改动
git·面试·github
呆萌很15 小时前
Git push 408 超时、远程断开解决办法
git
Lesile15 小时前
Hands-on Git experience
git
Co_Hui17 小时前
Git 基本使用
git
cooldream200917 小时前
AI 时代,Git 应该怎么学
人工智能·git
DogDaoDao17 小时前
【GitHub】WorldMonitor:一个工程极致主义的实时全球情报仪表盘深度解析
python·程序员·架构·github·go语言·worldmonitor·实时全球情报
其实防守也摸鱼18 小时前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
服务器·数据库·学习·开源·github·命令行·linux系统
析数塔18 小时前
SleeperGem 技术拆解:恶意 gem 是怎么躲过 CI/CD 扫描的
安全·ci/cd·github