自定义Git Submodule(diffusers)后跨主机同步问题求助
解决Diffusers子模块修改同步与克隆为空问题
一、先解决克隆父项目时子模块为空的问题
- 若已克隆父项目,执行以下命令拉取子模块内容:
git submodule update --init --recursive - 后续克隆父项目时,直接带参数拉取子模块:
git clone --recurse-submodules <你的父项目Git地址>
二、核心:同步自定义修改到其他主机(必须fork官方仓库)
因为你没有权限将修改推送到HuggingFace官方的Diffusers仓库,所以必须先fork仓库到自己的账号下,再同步修改:
- 前往Diffusers官方仓库页面,fork到自己的GitHub/GitLab账号,得到属于自己的仓库地址(比如
https://github.com/你的用户名/diffusers.git)。 - 在父项目的Diffusers子模块目录中,替换远程仓库地址:
cd diffusers git remote set-url origin <你的fork仓库地址> - 提交并推送你的自定义修改到自己的fork仓库:
git add some_file_I_need_to_customise.py git commit -m "自定义修改Diffusers的xxx功能" git push origin main # 或你当前使用的分支名 - 回到父项目根目录,提交子模块的状态更新(父项目需要记录子模块当前指向的commit和远程地址):
cd .. git add diffusers git commit -m "更新Diffusers子模块为个人fork仓库,同步自定义修改" git push - 后续其他主机克隆父项目时,用
git clone --recurse-submodules命令,就能直接拉取到包含你自定义修改的Diffusers子模块。
三、结合可编辑安装的适配
之前的可编辑安装是针对官方仓库的,替换为个人fork后,重新执行可编辑安装即可:
cd diffusers pip install -e .
这样后续修改Diffusers源码时,本地Python环境会直接生效,同时修改可正常提交到个人fork仓库,父项目也能同步子模块状态。
内容的提问来源于stack exchange,提问作者djmoon13
相关产品推荐
相关产品推荐

