使用r比较git中文件的两个版本的两个数据
我正在构建一个数据集,我希望它处于版本控制之下。作为发布过程的一部分,我想比较数据集的不同版本。为了简单起见,我希望以csv格式保存数据 如何使用R go获取数据文件的两个不同git版本?(下一步是比较内容,但这不是问题的一部分) 示例代码:(编辑2017-11-19修复了一些错误)使用r比较git中文件的两个版本的两个数据,r,git,R,Git,我正在构建一个数据集,我希望它处于版本控制之下。作为发布过程的一部分,我想比较数据集的不同版本。为了简单起见,我希望以csv格式保存数据 如何使用R go获取数据文件的两个不同git版本?(下一步是比较内容,但这不是问题的一部分) 示例代码:(编辑2017-11-19修复了一些错误) # #重新使用git2r示例代码获取状态 # ##创建临时git存储库 路径我找到了一种方法,也许有更好的方法。 它将涉及不同版本的检查, 要安全地做到这一点,重要的是要从清洁状态开始, 没有未提交的编辑 首先,您
#
#重新使用git2r示例代码获取状态
#
##创建临时git存储库
路径我找到了一种方法,也许有更好的方法。
它将涉及不同版本的检查
,
要安全地做到这一点,重要的是要从清洁状态开始,
没有未提交的编辑
首先,您需要找到要切换到的提交,检查以下结果:
commits(repo)
一旦知道您感兴趣的提交,请切换到它:
# n is the commit number to switch to, 1 is the last, 2 is the one before, ...
checkout(commits(repo)[[n]])
此时,您可以将文件读入df_foo
。
您可以切换到另一个提交以读取df_栏
,进行比较。
要切换回以前的状态,请执行以下操作:
checkout(repo, branch="master")
基于?签出,
我希望能够在给定的版本中签出特定的文件,
但这对我不起作用:
# doesn't work
checkout(commit, path="df.csv")
似乎特定文件的签出只适用于repo
参数,而不适用于特定提交。
例如,这用于替换索引中特定文件的内容:
checkout(repo, path="df.csv")
更重要的是,我在寻找与git show SHA:path相当的,
获取文件的内容,但是show
方法的文档是无用的,我微弱的尝试也没有成功:
# nothing useful here
show(commit, ":df.csv")
show(paste0(commit@sha, ":df.csv"))
我花了大约15分钟阅读了git2r
文档,但在这里似乎找不到任何有用的东西。如果您想在某个提交时签出某个文件,那么执行此操作的命令行方法是git checkout--path/to/file.ext
。您可能必须在此处使用命令行。此外,如果您想比较数据集的不同版本,那么通过git进行比较可能更有意义,例如,git diff
?如果您知道如何在命令行上执行某些操作,您可以始终使用system()
在R…@TimBiegeleisen中执行命令-命令行绝对是我的备用计划。我希望有一种方法可以避免这种情况,从而降低构建链的复杂性。谢谢你的帮助help@BenBolker-同意-cvs diff是我将如何跟踪更改的一部分,但我想使用R量化差异。感谢您的建议此解决方案对我很有效。在问题中结束最后的步骤。很高兴听到,我不是唯一一个被git2r中的doc弄糊涂的人。
# doesn't work
checkout(commit, path="df.csv")
checkout(repo, path="df.csv")
# nothing useful here
show(commit, ":df.csv")
show(paste0(commit@sha, ":df.csv"))