我构建了一个我想要保持版本控制的数据集。作为发布过程的一部分,我想比较不同版本的数据集。为简单起见,我想将数据保存为csv格式。
如何使用R go获取数据文件的两个不同git版本? (下一步是比较内容,但这不是问题的一部分)
示例代码:(编辑2017-11-19修正了一些错误)
#
# re-using git2r sample code for status
#
## Create a temporary git repository
path <- tempfile(pattern="git2r-")
dir.create(path)
repo <- init(path)
setwd(path)
#
# set up a simple frame and commit it twice
#
df <- data.frame(x = 1, y = 1:2)
write.csv2(df, "df.csv", row.names = FALSE)
add(repo, "df.csv")
commit(repo, "First commit message")
df <- data.frame(x = 1, y = 1:3)
write.csv2(df, "df.csv", row.names = FALSE)
add(repo, "df.csv")
commit(repo, "2nd commit message")
我在寻找什么 - 一种恢复文件特定版本的方法
df_first_commit <-
df_2nd_commit <-
并使用接受答案的帮助
checkout(commits(repo)[[1]])
df_2nd_commit <- read.csv2("df.csv")
checkout(commits(repo)[[2]])
df_first_commit <- read.csv2("df.csv")
答案 0 :(得分:1)
我找到了一种方法,也许有更好的方法。
它将涉及checkout
个不同的修订,
为了安全地做到这一点,从干净的状态开始是很重要的,
没有未提交的编辑。
首先,您需要找到要切换到的提交,检查结果:
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_bar
进行比较。
要切换回以前的状态:
checkout(repo, branch="master")
基于?checkout
,
我希望能够在给定的版本中签出特定文件,
但这不适合我:
# 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"))