背景与目标
在日常开发中,经常遇到代码已在本地编写但文件夹中没有 .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 等)过滤掉。
如果没有这个文件,可以手动新建:
touch .gitignore
然后在里面写入你想忽略的文件或文件夹规则。
第五步:暂存与提交本地代码
现在将本地的所有代码添加到暂存区,并提交到本地仓库。
# 将当前目录下所有更改添加到暂存区
git add .
# 提交到本地仓库,并附带注释
git commit -m "Initial commit: 将本地项目上传到远程仓库"
第六步:推送到远程仓库
最后,将本地所有的提交推送到远程仓库。
# -u 表示将本地分支与远程分支关联,下次直接输入 git push 即可
# 同样注意分支名是 master 还是 main
git push -u origin master
总结
整套流程的命令汇总如下(方便复制):
# 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
常见问题排查
-
报错
error: src refspec master does not match any- 原因:本地目前没有任何提交(commit),或者本地分支名不叫
master(现在的 Git 版本可能默认叫main)。 - 解决:先执行
git commit,然后检查当前分支名(git branch),如果是main,则将命令中的master改为main。
- 原因:本地目前没有任何提交(commit),或者本地分支名不叫
-
Pull 的时候出现 Vim 编辑界面
- 原因:Git 在自动合并时需要你填写合并日志。
- 解决:
- 按
i进入编辑模式(可选,默认直接按 ESC 也可以)。 - 按
ESC退出编辑模式。 - 输入
:wq然后回车(保存并退出)。
- 按

