背景与目标
在日常开发中,经常遇到代码已在本地编写但文件夹中没有 .git 目录的情况。此时在 GitHub/Gitee/GitLab 上创建了一个新的远程仓库(可能已包含 README.md 或 .gitignore),需要将本地代码推送至该远程仓库并由 Git 管理。
本文将演示如何将本地现有文件夹与远程仓库关联,拉取远程文件,最后将本地项目完整提交的流程。
场景描述
- 本地:有一个项目文件夹
MyProject,里面有代码,但未执行过git init。 - 远程:新建了一个仓库,且仓库里已有一些文件(如
README.md或LICENSE)。 - 目标:将本地
MyProject变成 Git 仓库,拉取远程的README.md,然后把本地代码提交上去。
操作步骤
第一步:初始化本地仓库
进入本地项目文件夹,打开终端(Terminal 或 Git Bash)。
# 进入项目目录(请根据实际路径修改)
cd /path/to/your/MyProject
# 初始化 git 仓库
git init
执行完毕后,项目目录下会多出一个隐藏文件夹 .git,代表本地仓库已初始化完成。
第二步:关联远程仓库
使用 git remote add 命令将本地仓库与远程仓库建立连接。
# origin 是远程仓库的别名(习惯上默认叫 origin)
# <Your-Repository-URL> 换成你的仓库地址(HTTPS 或 SSH 均可)
git remote add origin https://gitee.com/username/my-project.git
第三步:拉取远程仓库内容(关键步骤)
如果远程仓库是空的,直接 Push 即可。但如果远程仓库里已经有文件,需要先把它 Pull 下来。
此时直接执行 git pull origin master 通常会报错:
fatal: refusing to merge unrelated histories(拒绝合并无关的历史)。
原因:本地仓库和远程仓库是两个独立生成的'历史',Git 认为它们没有血缘关系,所以默认不让合并。
解决方案:加上 --allow-unrelated-histories 参数。
# 拉取远程代码,并允许合并无关历史
# 注意:此时分支名可能是 master 也可能是 main,请根据远程仓库实际情况调整
git pull origin master --allow-unrelated-histories
执行后,远程的 README.md 就会出现在你的本地文件夹中。
第四步:处理 .gitignore(可选但推荐)
在提交代码之前,建议在根目录下创建一个 .gitignore 文件,把不需要上传的文件(如 node_modules、.idea、*.log、dist 等)过滤掉。

