使用r比较git中文件的两个版本的两个数据

使用r比较git中文件的两个版本的两个数据,r,git,R,Git,我正在构建一个数据集,我希望它处于版本控制之下。作为发布过程的一部分,我想比较数据集的不同版本。为了简单起见,我希望以csv格式保存数据 如何使用R go获取数据文件的两个不同git版本?(下一步是比较内容,但这不是问题的一部分) 示例代码:(编辑2017-11-19修复了一些错误) # #重新使用git2r示例代码获取状态 # ##创建临时git存储库 路径我找到了一种方法,也许有更好的方法。 它将涉及不同版本的检查, 要安全地做到这一点,重要的是要从清洁状态开始, 没有未提交的编辑 首先,您

我正在构建一个数据集,我希望它处于版本控制之下。作为发布过程的一部分,我想比较数据集的不同版本。为了简单起见,我希望以csv格式保存数据

如何使用R go获取数据文件的两个不同git版本?(下一步是比较内容,但这不是问题的一部分)

示例代码:(编辑2017-11-19修复了一些错误)

#
#重新使用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"))