如何将已经存在的本地项目源码关联到远程git仓库中,这是一个非常使用的操作。我们给大家举一个案例进行讲解,大家可以参考学习
场景:用户想将本地已有的frontend和backend两个项目关联到同一个Git仓库中。这是一个很常见的场景,特别是前后端分离项目中需要统一管理代码的情况
结构:
my-repo/
├── frontend/ # 前端项目代码
│ ├── src/
│ ├── package.json
├── backend/ # 后端项目代码
│ ├── src/
│ ├── pom.xml
└── .gitignore # 全局忽略文件
思路:在同一个仓库中为每个项目创建独立目录(如 frontend/
、backend/
),提交时所有文件共享同一条历史记录
操作步骤:
1.本地创建一个新仓库并初始化
mkdir my-repo && cd my-repo
git init
2.创建全局.gitignore文件
在根目录创建 .gitignore
,添加需忽略的文件(如node_modules/
、.env
等)
touch .gitignore
echo "node_modules/" >> .gitignore
echo ".env" >> .gitignore
解释:上面命令规则与作用范围。值得去了解
- node_modules/
- 尾部斜杠 / 表示忽略目录而非文件。
- 规则会递归忽略所有层级的 node_modules 目录(如根目录、子目录下的 node_modules)。
- 若只想忽略根目录下的目录,需写为/node_modules/(开头斜杠限定根目录)。
- .env
- 无路径前缀时,会忽略整个仓库中所有名为 .env 的文件或目录(包括子目录)。
- 若只想忽略根目录下的 .env 文件,需写为 /.env(开头斜杠限定根目录)
其他用法
- 忽略特定子目录中的文件
echo "dist/*.js" >> .gitignore # 忽略 dist 目录下所有 .js 文件
echo "logs/*.log" >> .gitignore # 忽略 logs 目录下所有 .log 文件
- 保留某些被忽略的文件
echo "!src/.env" >> .gitignore # 不忽略 src/.env(需先忽略 .env)
- 精确匹配根目录内容
echo "/.env" >> .gitignore # 仅忽略根目录下的 .env 文件
echo "/build/" >> .gitignore # 仅忽略根目录下的 build 目录
特殊场景处理
- 已跟踪文件的忽略,若
node_modules
或.env
已被 Git 跟踪,需先移除:
git rm -r --cached node_modules # 从版本库删除(保留本地文件)
git rm --cached .env # 同上
git commit -m "停止追踪 node_modules 和 .env"
- 验证忽略效果
git status --ignored # 查看被忽略的文件
git check-ignore -v .env # 检查 .env 是否被忽略及匹配规则
3.迁移子项目到仓库子目录中(如果window系统,可以直接复制粘贴即可)
# 假设 frontend、backend 原路径为 ~/projects/frontend 和 ~/projects/backend
mkdir frontend backend
cp -r ~/projects/frontend/* frontend/
cp -r ~/projects/backend/* backend/
4.提交代码并关联远程仓库
git add .
git commit -m "初始化: 添加 frontend 和 backend 项目"
git remote add origin <远程仓库URL> # 如 git@github.com:yourname/my-repo.git
git push -u origin master