如何在R项目中从GitHub代码切换到本地未提交修改代码调试
调试本地修改的R包代码(无需每次提交GitHub)
步骤1:克隆目标仓库到本地并切换指定Commit
先将你之前安装的特定版本仓库克隆到本地,同时切换到对应commit:
# 克隆仓库 git clone https://github.com/OHDSI/ETL-Synthea.git # 进入本地仓库目录 setwd("ETL-Synthea") # 切换到目标commit版本 git checkout bae1c8eca8dba7ba1129f6c5f758b985c5458405
步骤2:用devtools加载本地包替代线上安装版
在RStudio中进入本地仓库目录后,使用devtools::load_all()加载本地包,R会优先调用你本地修改的代码,而非之前通过install_github安装的线上版本:
# 确保当前工作目录是本地仓库路径 setwd("path/to/your/local/ETL-Synthea") # 加载本地包 devtools::load_all()
步骤3:直接调试本地函数
现在可以直接调试本地版本的目标函数,无需额外包装:
# 开启函数调试 debug(ETLSyntheaBuilder::LoadEventTables) # 调用函数开始调试 ETLSyntheaBuilder::LoadEventTables(connectionDetails = cd, cdmSchema = cdmSchema, syntheaSchema = syntheaSchema, cdmVersion = cdmVersion, syntheaVersion = syntheaVersion)
步骤4:修改代码后快速重载
每次修改本地R文件后,重新运行devtools::load_all()即可加载最新改动,直接再次调用函数调试,全程无需提交到GitHub。
减少原文件改动的技巧
- 临时测试修改:如果只是临时调试不想修改原文件,可以在控制台临时重写函数,仅当前会话生效,不会污染本地仓库文件:
# 临时覆盖原函数逻辑 LoadEventTables <- function(connectionDetails, cdmSchema, syntheaSchema, cdmVersion, syntheaVersion) { # 在这里写入你的调试修改代码 # 保留原函数核心逻辑+新增调试内容 } # 调试临时函数 debug(LoadEventTables) LoadEventTables(connectionDetails = cd, cdmSchema = cdmSchema, syntheaSchema = syntheaSchema, cdmVersion = cdmVersion, syntheaVersion = syntheaVersion) - 需保留的修改:直接修改本地仓库对应R文件,用
load_all()重载即可,后续提交时仅需提交实际修改的文件,无需改动调用代码。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

