我尊敬的许多数据分析师都使用版本控制.

然而,我正在判断采用git这样的版本控制系统是否值得.

简要概述:

关于版本控制,我已经读到了很多好处,但它们似乎与solo数据分析师的关系不大.

  • 备份:我已经有了备份系统.
  • Forking 和倒带:我从未觉得有必要这么做,
  • 协作:我大多数时候

采用版本控制还涉及到几个潜在成本:

  • 是时候判断和学习版本控制系统了
  • 与我当前的文件管理系统相比,复杂性可能会增加

然而,我仍然觉得我错过了什么.

因此,特别是在与上述情况类似的情况下,与数据分析师有关:

  1. 版本控制值得吗?
  2. 采用版本控制的主要利弊是什么?
  3. 开始使用版本控制的好策略是什么

推荐答案

我觉得你的问题的答案是响亮的"是"——使用版本控制系统管理文件的好处远远超过了实施这样一个系统的成本.

我将try 详细回应你提出的一些观点:

  • 我已经有了备份系统.

是的,我也是.但是,对于依赖于一个通用备份系统来适当地跟踪与您的工作相关的重要和活跃的文件的适当性,还有一些问题需要考虑.在性能方面:

  • 备份系统每隔多长时间拍摄快照?
  • 构建快照需要多长时间?
  • 在拍摄快照时,它是否必须对整个硬盘进行镜像,或者是否可以轻松地让它备份刚刚收到关键更新的两个文件?
  • 你的备份系统能否精确地告诉你,从一次备份到下一次备份,你的文本文件发生了什么变化?

最重要的是:

  • 备份保存在多少个位置?它们是否与您的计算机位于同一物理位置?
  • 从备份系统中恢复单个文件的给定版本有多容易?

例如,有一台Mac电脑,用时光机备份到我电脑的另一个硬盘.时间机器是伟大的恢复奇怪的文件或恢复我的系统,如果事情变得一团糟.然而,它根本不具备我重要工作的可信度:

  • 备份时,Time Machine必须对整个硬盘进行镜像,这需要相当长的时间.如果我继续工作,无法保证我的文件将以我启动备份时的状态被捕获.在第一次备份完成之前,我可能还想保存另一个点.

  • 我的时间机器备份保存到的硬盘位于我的机器中,这使得我的数据容易被盗、起火和其他灾难.

有了Git这样的版本控制系统,我就可以启动特定文件的备份,而无需像在文本编辑器中请求保存那样费力——文件会立即成像并存储.此外,Git是分布式的,所以我工作的每台计算机都有一份存储库的完整副本.

这相当于将我的工作镜像到四台不同的计算机上——除非是天灾,否则任何东西都不能破坏我的文件和数据,在这一点上,我可能不会太在意.

  • Forking and rewinding:我从未觉得有必要这样做,但我能看出它是多么有用(例如,你正在根据同一个数据集准备多篇期刊文章;你正在准备一份每月更新的报告,等等)

作为一名独奏者,我也不太喜欢用fork .然而,我通过选择倒带节省的时间已经一手偿还了我在学习版本控制系统上的投资很多次.你说你从来没有觉得有必要这么做,但在你当前的备份系统下倒带任何文件真的是一个无痛、可行的选择吗?

有时候,45分钟前,一个小时或两天前,这份报告看起来好多了.

  • 大多数时候我都是Collaboration:

是的,但是如果你最终在一个项目上与他人合作,你会学到一个可能被证明是不可或缺的工具.

  • 是时候判断和学习版本控制系统了

不要太担心这个.版本控制系统就像编程语言——它们有几个关键概念需要学习,其余的只是语法糖.基本上,你学习的第一个版本控制系统需要投入最多的时间——切换到另一个版本只需要学习新系统如何表达关键概念.

选择一个受欢迎的系统并付诸实践!

  • 与我当前的文件管理系统相比,复杂性可能会增加

你有没有一个文件夹,比如Projects个,包含所有与你的数据分析活动相关的文件夹和文件?如果是这样的话,那么对其进行版本控制将使文件系统的复杂度增加0.如果你的项目散布在你的计算机上——那么你应该在应用版本控制之前集中它们,这将减少管理文件的复杂性——这就是为什么我们有一个Documents文件夹.

  1. 版本控制值得吗?

对它给你一个巨大的撤销按钮,让你可以轻松地将工作从一台机器转移到另一台机器,而不用担心丢失USB驱动器之类的事情.

2采用版本控制的主要利弊是什么?

我能想到的唯一缺点是文件大小略有增加——但现代版本控制系统可以通过压缩和选择性保存完成绝对惊人的事情,所以这几乎是一个没有意义的观点.

3使用R进行数据分析的版本控制入门的好策略是什么(例如,示例、工作流思想、软件、指南链接)?

将生成数据或报告的文件置于版本控制之下,要有选择性.如果您使用的是Sweave个文件,请存储.Rnw个文件,而不是从中生成的.tex个文件.如果重新获取数据会很困难,请存储原始数据.如果可能,编写并存储一个获取数据的脚本和另一个清理或修改数据的脚本,而不是存储对原始数据的更改.

至于学习版本控制系统,我强烈推荐Git和this guide.

这些网站还提供了一些与使用Git执行特定操作相关的技巧:

  • 一百

  • 一百

R相关问答推荐

如何做每列报告的最新值的新数据框?

tidyverse:数据转换,gather()

R Shiny:滑块锚在末端重叠

expss表输出的rbinding表错误

使用 mutate_at 和 contains 将函数应用于多列

合并三个不同行长的df

在指定时间后无法收敛时停止 Keras

如何根据列表名称对数据进行排序?

将随机观察值的总和计算为 R 中每周的总和

将一行转换成combine,c()作为r中的向量,然后用向量计算余弦相似度

在 group_by 中,改变一个新列,该列根据列的出现顺序获取列的值

如何将第二个变量添加到直方图 ggplot 并在当前直方图上绘制,从第二个变量添加密度曲线

如何创建一个值而不是一个列表

查找 R 中两个时间戳之间的重叠以分配班次

如何根据固定重复对数字列表进行分组

R Dataframe 重组和总结

分配括号内的变量

which(arr.ind = TRUE) 不适用于 %in%

如果行数为奇数,则从数据框中删除随机行

有什么理由不使用 ggplot() + aes() + geom_() 语法吗?