如何将本地修改后的源码关联至原GitHub项目并搭建多级Git仓库
Git操作全流程指导
一、本地仓库初始化(Android Studio/终端均可操作)
- 打开项目根目录的终端,执行初始化命令:
git init - 将当前项目所有文件纳入Git管理,提交为初始基线版本:
git add . git commit -m "初始提交:基于原GitHub项目的基础版本" - 关联原项目GitHub仓库作为上游,方便后续对比修改:
git remote add upstream https://github.com/原作者账号/原项目仓库名.git
二、搭建NFS远程裸仓库
- 登录NFS文件服务器(或在本地挂载NFS目录后),选择合适路径创建裸仓库(裸仓库无工作区,仅用于远程同步):
mkdir -p /nfs/shared/git-repos/你的项目名.git cd /nfs/shared/git-repos/你的项目名.git git init --bare
三、关联本地仓库与NFS远程
- 回到本地项目终端,添加NFS远程仓库地址:
git remote add nfs /挂载的NFS路径/你的项目名.git - 验证远程关联:
输出应包含git remote -vnfs和upstream两个远程地址。
四、实现「本地→NFS→GitHub」同步架构
1. 本地推送到NFS远程
每次本地修改完成后,提交并推送:
# 暂存修改文件,.代表暂存所有,也可指定单个文件名 git add . git commit -m "修改说明:xxx(如修复XX bug/新增XX功能)" # 推送到NFS远程仓库的对应分支(以main为例) git push nfs main
2. NFS远程推送到GitHub
- 在NFS服务器的裸仓库目录下,添加你的GitHub复刻仓库作为远程:
cd /nfs/shared/git-repos/你的项目名.git git remote add github https://github.com/你的GitHub账号/你的复刻仓库名.git - 从NFS推送到GitHub:
git push github main
五、对比原项目找出修改文件
执行以下命令查看本地分支与原项目上游分支的差异:
# 先拉取原项目最新代码(可选,确保对比的是最新版本) git fetch upstream # 对比本地main分支与原项目main分支的所有修改 git diff upstream/main main
输出会列出所有修改的文件及具体变更内容,你可以据此在修改文件头部添加Apache 2.0要求的版权修改说明,或在项目根目录新增NOTICE文件汇总所有修改点。
六、失误后的Git重置方法
1. 未提交的本地修改,直接放弃
# 放弃所有未暂存的修改 git checkout . # 放弃指定文件的未暂存修改 git checkout -- 文件名
2. 已提交但未推送到远程,回退到上一版本
# 硬重置,彻底删除当前提交及修改(谨慎使用,不可恢复) git reset --hard HEAD^ # 软重置,保留修改内容,仅撤销提交记录 git reset --soft HEAD^
3. 已推送到NFS远程,需要回退并覆盖远程
# 本地先硬重置到目标版本(比如上一版本HEAD^) git reset --hard HEAD^ # 强制推送到NFS远程,覆盖远程分支(注意:若有人已从NFS拉取代码,会造成冲突,需提前沟通) git push nfs main --force
内容的提问来源于stack exchange,提问作者ceperman
相关产品推荐
相关产品推荐

