You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多文件夹Angular课程代码合并为单个Git仓库,每文件夹对应一次commit?

批量将多课程文件夹合并为单个Git仓库的高效方法

前提准备

假设你的所有课程项目文件夹都在同一个父目录下(比如../course-lessons/),且可以按课程顺序识别(比如按lesson-01、lesson-02命名,或你能手动整理出顺序列表)。

步骤1:初始化空Git仓库

先创建并进入一个新的空文件夹,作为统一的Git仓库:

mkdir angular-course-repo
cd angular-course-repo
git init
# 可选:添加.gitignore忽略node_modules,避免提交依赖文件夹
echo "node_modules/" >> .gitignore
git add .gitignore
git commit -m "chore: add gitignore for node_modules"

步骤2:批量处理课程文件夹(脚本方式)

如果课程文件夹是按顺序命名的(比如lesson-01到lesson-n),直接用循环脚本一次性完成所有提交:

# 遍历父目录下的所有课程文件夹,按名称排序
for lesson_dir in ../course-lessons/lesson-*; do
  # 提取课程文件夹名称
  lesson_name=$(basename "$lesson_dir")
  # 清空当前仓库的所有文件(保留.git目录)
  git rm -rf .
  # 复制当前课程的所有文件到仓库
  cp -r "$lesson_dir"/* .
  # 暂存所有变更
  git add .
  # 提交并添加清晰的备注
  git commit -m "feat: $lesson_name complete project files"
  # 可选:给每个课程提交打标签,方便后续快速切换
  git tag -a "$lesson_name" -m "Course lesson: $lesson_name"
done

如果课程文件夹命名不规律,先手动整理好顺序,保存到lessons.txt文件中(每行一个课程文件夹的绝对/相对路径),再用以下脚本处理:

# 读取lessons.txt中的顺序,逐个处理
while read lesson_dir; do
  lesson_name=$(basename "$lesson_dir")
  git rm -rf .
  cp -r "$lesson_dir"/* .
  git add .
  git commit -m "feat: $lesson_name project files"
  git tag -a "$lesson_name" -m "Course lesson: $lesson_name"
done < lessons.txt

步骤3:后续切换课程

完成所有提交后,你可以通过以下方式快速切换到任意课程的代码:

  • 通过commit哈希切换:先执行git log查看所有提交的哈希值,再运行git checkout <commit-hash>
  • 通过标签切换(如果之前打了标签):直接运行git checkout lesson-01(替换为对应课程的标签名)

注意事项

  • 脚本会自动覆盖当前仓库的所有文件,确保在空仓库中执行,避免误删已有内容
  • 如果课程中包含.gitignore或其他配置文件,脚本会自动保留对应课程的版本,符合每个commit对应课程当时的状态
  • 不提交node_modules可以大幅减少仓库体积,切换课程后只需执行一次npm install即可(因为每个课程的package.json已在commit中,依赖会自动匹配)

内容的提问来源于stack exchange,提问作者Luis Alejandro Burgos Rosero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:30:50