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

如何将本地修改后的源码关联至原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 -v
    
    输出应包含nfs和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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:55:00