如何在不发送Pull Request的情况下使用Fork的CANard仓库本地修改?
没问题,我给你整理了几个完全符合需求的方案——不用给原作者发PR,只在本地保留你的修改,完全不改动远程仓库:
方案一:用本地特性分支管理修改(推荐)
这种方式既能保留你的修改,还能方便同步上游仓库的更新,而且所有修改只存在于你的本地电脑:
- 先切换到主分支,拉取上游仓库的最新代码(确保你的本地主分支是最新的):
git fetch upstream git merge upstream/main - 创建一个只在本地存在的特性分支,用来存放你的修改:
git checkout -b local-recv-upgrades - 在这个分支上完成你的所有修改(比如新增支持文件、字符串接收的函数),然后本地提交:
git add . git commit -m "新增dev.recv()对文件和字符串的支持" - 关键:绝对不要执行
git push,这样这个分支和所有修改就只会留在你的本地仓库,不会同步到你的远程fork或者原作者的仓库。 - 之后如果上游仓库有更新,你可以切回主分支拉取更新,再合并到你的本地特性分支:
处理完可能的冲突后,继续在这个分支上开发或使用即可。git checkout main git pull upstream main git checkout local-recv-upgrades git merge main
方案二:用补丁文件保存修改
如果不想维护分支,也可以把修改导出成补丁,需要的时候再手动应用:
- 先在本地完成修改,不要提交,然后导出补丁文件:
git diff > recv-function-enhancements.patch - 把这个补丁文件存到安全的地方,之后如果需要重置仓库到干净状态(比如拉取了上游新代码),可以用补丁恢复你的修改:
git apply recv-function-enhancements.patch - 这种方式适合临时保存修改,缺点是如果上游代码变动较大,补丁可能会出现冲突,需要手动调整冲突内容。
方案三:让Git忽略你的本地修改
如果你完全不想用Git管理修改,也可以直接改代码,然后让Git假装看不到这些修改:
- 修改完代码后,执行命令让Git停止追踪该文件的变更:
git update-index --assume-unchanged path/to/your/modified/file.py - 之后你执行
git status或者git pull时,Git会忽略这个文件的修改,不会把它纳入提交,也不会被上游的更新覆盖(不过如果上游这个文件有大更新,拉取时还是可能冲突,记得提前备份)。 - 要是之后需要恢复追踪这个文件,执行:
git update-index --no-assume-unchanged path/to/your/modified/file.py
方案四:在虚拟环境中安装本地修改版
如果你是把CANard作为项目依赖使用的,还可以直接在虚拟环境里安装你修改后的本地版本:
- 进入你修改好的CANard本地仓库目录,执行:
pip install -e . - 这个命令会把本地的CANard安装为“可编辑”模式,之后你对代码的任何修改都会直接生效到你的项目中,不用重新安装。而且这种方式完全不会涉及远程仓库的改动。
内容的提问来源于stack exchange,提问作者annonymous
相关产品推荐
相关产品推荐

