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

如何从创建开始用Git管理Django项目及其独立模块?

没问题!我帮你梳理从创建Django项目开始,用Git Submodule或者Git Subtree实现「主仓库管理整个Django项目+每个App作为独立Git仓库」的完整流程,两种方案都给你详细步骤,你可以根据需求选择:

方案一:使用Git Submodule(适合严格分离App版本、独立维护的场景)

1. 创建并初始化主项目仓库

首先创建Django主项目,把它变成Git仓库并推送到远程:

# 创建Django主项目
django-admin startproject myproject
cd myproject

# 初始化Git仓库并提交初始代码
git init
git add .
git commit -m "Initial commit: Django project skeleton"

# 关联远程主仓库(替换成你的Git托管地址,比如GitHub/GitLab)
git remote add origin git@your-git-host:your-username/myproject.git
git push -u origin main

2. 创建独立的App仓库

接下来创建单个App,把它变成独立的Git仓库并推送到远程:

# 在主项目目录下创建App
python manage.py startapp blog

# 将App目录移到主项目外,初始化独立Git仓库
mv blog ../
cd ../blog

git init
# 添加Django App专属的.gitignore规则
echo "__pycache__/" >> .gitignore
echo "migrations/*.py" >> .gitignore
echo "migrations/*.pyc" >> .gitignore

git add .
git commit -m "Initial commit: Blog app skeleton"

# 关联远程App仓库(替换成你的地址)
git remote add origin git@your-git-host:your-username/blog.git
git push -u origin main

# 回到主项目目录
cd ../myproject

3. 将App作为Submodule添加到主项目

现在把独立的App仓库以submodule的形式引入主项目:

# 添加submodule,指定远程仓库地址和本地存放目录
git submodule add git@your-git-host:your-username/blog.git blog

# 提交submodule的配置文件(.gitmodules)和App目录引用
git add .gitmodules blog
git commit -m "Add blog app as submodule"
git push origin main

4. 后续维护注意事项

  • 克隆主项目时,要同步所有submodule:git clone --recurse-submodules git@your-git-host:your-username/myproject.git,如果已经克隆了主项目,执行git submodule update --init --recursive
  • 在App目录(submodule)里修改代码后,需要先在App目录内提交并推送到它自己的远程仓库,再回到主项目提交submodule的版本更新
  • 要更新某个submodule到远程最新版本:git submodule update --remote blog

方案二:使用Git Subtree(操作更简单,适合不想折腾submodule的场景)

Subtree不需要额外的配置文件,App的代码会直接包含在主仓库里,同时保持和独立App仓库的同步。

1. 创建并初始化主项目仓库(和方案一第一步完全一致)

django-admin startproject myproject
cd myproject

git init
git add .
git commit -m "Initial commit: Django project skeleton"

git remote add origin git@your-git-host:your-username/myproject.git
git push -u origin main

2. 创建独立的App仓库(和方案一第二步完全一致)

python manage.py startapp blog
mv blog ../
cd ../blog

git init
echo "__pycache__/" >> .gitignore
echo "migrations/*.py" >> .gitignore
echo "migrations/*.pyc" >> .gitignore

git add .
git commit -m "Initial commit: Blog app skeleton"
git remote add origin git@your-git-host:your-username/blog.git
git push -u origin main

cd ../myproject

3. 将App作为Subtree添加到主项目

# 添加subtree,指定本地目录、远程仓库地址和分支
# --squash参数会把App的历史压缩成一个提交,避免主仓库历史过于冗长,不需要的话可以去掉
git subtree add --prefix=blog git@your-git-host:your-username/blog.git main --squash

git commit -m "Add blog app as subtree"
git push origin main

4. 后续维护注意事项

  • 从远程App仓库拉取最新更新:git subtree pull --prefix=blog git@your-git-host:your-username/blog.git main --squash
  • 将主项目中对App的修改推送到远程App仓库:git subtree push --prefix=blog git@your-git-host:your-username/blog.git main
  • 克隆主项目不需要额外操作,直接git clone即可,Subtree的内容会直接包含在主仓库里

方案选择建议

  • 如果你的App需要完全独立迭代、和主项目版本严格分离,或者需要在多个项目中复用同一个App,优先选Git Submodule
  • 如果只是想简单地把App代码独立管理,同时不想处理submodule的复杂操作,选Git Subtree更省心

内容的提问来源于stack exchange,提问作者WillHoh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:22:32