【Git实战】如何将本地已有项目关联并推送到指定的远程仓库(保姆级教程)
【Git实战】如何将本地已有项目关联并推送到指定的远程仓库(保姆级教程)
在日常开发中,我们经常遇到这样一种情况:代码已经在本地写了很多了,文件夹里并没有 .git 目录,此时我们在 GitHub/Gitee/GitLab 上创建了一个新的仓库(可能手滑顺便勾选了创建 README.md 或 .gitignore),现在想要把本地的代码推送到这个远程仓库中,并由 Git 进行管理。
本文将详细演示如何将本地现有文件夹与远程仓库关联,拉取远程文件,最后将本地项目完美提交的完整流程。
场景描述
- 本地: 有一个项目文件夹
MyProject,里面有代码,但没有执行过git init。 - 远程: 新建了一个仓库(Repository),并且仓库里已经有一些文件(比如
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 即可。但如果远程仓库里已经有文件(如 README.md),我们需要先把它 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 然后在里面写入你想忽略的文件或文件夹规则。
第五步:暂存与提交本地代码
现在将本地的所有代码添加到暂存区,并提交到本地仓库。
# 将当前目录下所有更改添加到暂存区gitadd.# 提交到本地仓库,并附带注释git commit -m "Initial commit: 将本地项目上传到远程仓库"第六步:推送到远程仓库
最后,将本地所有的提交推送到远程仓库。
# -u 表示将本地分支与远程分支关联,下次直接输入 git push 即可# 同样注意分支名是 master 还是 maingit 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. 添加全部文件gitadd.# 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然后回车(保存并退出)。
- 按
作者提示:
养成良好的 Git 习惯,在 Push 之前先 Pull,可以避免很多冲突。如果你觉得这篇文章有用,欢迎点赞收藏!