我认为您的问题的答案是肯定的-使用版本控制系统管理文件的好处远远超过了实施这种系统的成本。
我将尝试详细回答您提出的一些观点:
是的,我也是。但是,对于依靠通用备份系统适当跟踪与您的工作有关的重要和活动文件的适当性,有一些问题需要考虑。在性能方面:
- 您的备份系统每隔多长时间拍摄一次快照?
- 建立快照需要多长时间?
- 拍摄快照时是否必须对整个硬盘进行映像,或者是否很容易被告知仅备份两个刚刚收到关键更新的文件?
- 您的备份系统能否准确地向您显示从一个备份到另一个备份的文本文件中发生了什么变化?
最重要的是:
- 备份保存在几个位置?它们是否与您的计算机位于同一物理位置?
- 从备份系统还原给定版本的单个文件有多容易?
例如,有一台Mac,然后使用Time Machine备份到计算机中的另一个硬盘驱动器。如果发生问题,Time Machine非常适合恢复奇数文件或还原我的系统。但是,根本没有什么可以让我的重要工作值得信赖的:
使用像Git这样的版本控制系统,我可以毫不费力地启动特定文件的备份,而无需在文本编辑器中请求保存-并且文件可以立即成像并存储。此外,Git是分布式的,因此我使用的每台计算机都具有存储库的完整副本。
这相当于将我的工作镜像到四台不同的计算机上-简直就是天灾人祸,无法破坏我的文件和数据,在这一点上我可能也不太在乎。
- 分叉和倒带:我从没有觉得有必要这样做,但是我可以看到它的用处(例如,您正在基于同一数据集准备多个期刊文章;您正在准备每月更新的报告等) )
作为一个独奏家,我也没有那么多钱。但是,我可以选择倒带节省的时间已经单手收回了我在学习版本控制系统上的很多次投资。您说您从未感到过这样做的必要-但在当前备份系统下倒带任何文件确实是一种轻松可行的选择吗?
有时候,报告在一小时或两天前的45分钟看起来更好。
- 协作:大多数时候,我自己分析数据,因此,我无法获得版本控制的协作优势。
是的,但是如果您最终与项目上的其他人协作,您将学到一种必不可少的工具。
不必为此担心太多。版本控制系统就像编程语言一样,它们具有一些需要学习的关键概念,其余的只是语法糖。基本上,您学习的第一个版本控制系统将需要花费大量时间才能切换到另一个版本控制系统,而这只需要学习新系统如何表达关键概念即可。
选择一个流行的系统,并为此而努力!
您是否有一个文件夹,例如Projects
包含与您的数据分析活动相关的所有文件夹和文件?如果这样的话,那么对其进行版本控制将使文件系统的复杂性增加3个百分点0
。如果您的项目散布在计算机上,则应在应用版本控制之前将其集中化,这最终会降低Documents
文件管理的复杂性,这就是我们毕竟拥有文件夹的原因。
- 版本控制值得付出努力吗?
是! 它为您提供了巨大的撤消按钮,使您可以轻松地在机器之间转移工作,而不必担心丢失USB驱动器之类的事情。
2采用版本控制的主要利弊是什么?
我唯一想到的缺点是文件大小略有增加,但是现代版本控制系统可以通过压缩和选择性保存来做绝对令人惊奇的事情,因此这几乎是一个有争议的问题。
3用R进行数据分析的版本控制入门的最佳策略是什么(例如,示例,工作流程构想,软件,指南链接)?
使生成数据或报告的文件在版本控制下保持选择性。如果您使用Sweave
,则存储.Rnw
文件,而不要存储.tex
从文件中生成的文件。如果要重新获取原始数据,请存储原始数据。如果可能,编写并存储一个脚本来获取您的数据,并编写另一个脚本来清理或修改它,而不是存储对原始数据的更改。
至于学习版本控制系统,我强烈推荐Git及其本指南。
这些网站还提供了一些与使用Git执行特定操作有关的好技巧: