首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MATLAB进行数据处理的硕士研究生合适的版本控制系统是什么?

用MATLAB进行数据处理的硕士研究生合适的版本控制系统是什么?
EN

Software Recommendation用户
提问于 2018-05-22 16:33:15
回答 4查看 105关注 0票数 2

我正在做硕士论文,并试图决定最好的方式来组织我的MATLAB数据处理文件。我想征求关于使用的最佳版本控制系统的建议。什么才是合适的社区?我的工作包括以下几点:

  1. 我独自工作(从来没有其他人添加到代码中)
  2. 然而,我经常使用两种不同的系统(办公室的台式机,家里的笔记本电脑),现在我只是和Google同步。
  3. 我有大约100个文件,用于与数据导入、处理和生成地块相关的各种功能。

我开始厌倦了Google备份时间的不确定性,因为我想让电脑在我离开学校的时候备份所有的文件,并让它们与我的笔记本电脑同步。(有没有办法迫使这种情况手动发生?)

我对Git也有一点了解,并认为这对我很有帮助,因为我做了大量的代码修改,以使事情变得更好。现在,我有大量的死文件,并且通过定期复制我的工作文件夹来获得以前状态下的快照,从而进行了非常粗糙的“版本控制”。我相信吉特会是一个更好的选择。

GitHub的一个问题似乎是隐私方面;我不喜欢所有代码都公开的想法。无论如何,我正在试图找到最好的Git或其他软件(或同步系统),这将是最好的这种类型的工作流。谢谢。

EN

回答 4

Software Recommendation用户

发布于 2018-05-22 19:07:52

首先,现在就开始使用git --即使它只在本地存储库上,这样您就可以从中学习--但是不要将它放在Google或其他文件共享上,因为它可能因此而损坏。许多文件共享站点都在小字体中发出通知,不要将它们用于托管存储库,因为它们有时会做出将使存储库框失效的更改,这一点尤其糟糕,例如跳过它们不喜欢的文件,或者以不同的方式存储它们。

最简单的方法是在拼贴机的硬盘上有一个工作存储库,在家用计算机上有另一个存储库,在可移动驱动器上有一个传输存储库(USB棒)。在您离开一个位置之前,请签入&推送您的更改,然后从您的传输驱动器中提取更改,当您到达另一个位置时,从驱动器中拉动。(比你想象的要快得多)。

请注意,如果您忘记在位置之间同步,则git非常擅长将更改合并到纯文本文件,但如果您处理不同的文件组(例如不同的问题),则会更容易,直到您有机会得到同步--不要尝试合并二进制文件。

在使用USB驱动器在位置之间工作时,您可以获得更复杂的工作流程(假设您已经有了一些重要的快照):

  1. 选择一个位置作为您的名义主人(例如,在您的家庭计算机上的一个空目录)
  2. 空目录中的git init
  3. 将您的文件的最早版本从快照目录放到它们的目录结构中,但不包含该目录--所以当您拥有它时,它就像是您的工作目录。
  4. 使用您不希望控制的文件的模式创建一个gitignore文件,例如:*.bak --有关更多信息,请参见git help ignore
  5. git status将允许您查看git认为可能需要签入的内容。
  6. 使用git add一次一次添加文件,或者使用git commit -a一次性添加文件,但请参阅下一点
  7. 一旦添加了文件,或者在执行全部提交时,您需要使用描述性消息进行提交,例如:git commit -a -m"This is my old first snapshot from back in June" --如果您忘记了-m消息,编辑器将为您打开其中一个。
  8. 将您的下一次快照复制到此目录上,替换任何现有文件。
  9. git status将告诉您哪些文件实际更改了。
  10. gitignore文件中添加可能需要的任何新模式。
  11. 使用不同的消息重复上述添加和提交步骤。
  12. 继续工作,直到快照用完,然后对当前的工作副本进行同样的操作。
  13. 一旦您对此感到满意,最好重新命名现有的工作目录(为了安全起见),然后将新的git存储库主管重命名为以前的工作目录。
  14. 在您的USB驱动器上,使用git clone和您的存储库在该机器上的位置的路径。这将创建一个新目录,其名称与路径的最后一部分相同。
  15. 回到您的存储库目录中,使用您刚才创建的USB驱动器上的实际驱动器和路径来运行git remote add usb d:/my_repo,而不是d:/my_repo。这允许您使用git push usb使用签入更新usb驱动器。
  16. 当您到达您的另一个位置,您可以插入usb棒,然后从您预期的工作位置上方的一个目录运行git clone e:/my_repo注意,我假设驱动器号可能有所不同。
  17. 就我个人而言,我将再次在您的新克隆中使用git remote add usb ...,这样您就可以在两个位置使用相同的push命令。
  18. 如果你愿意的话,你也可以在家庭和学校的USB拷贝中添加遥控器。

您还可以考虑在以下之一上拥有一个私有存储库:

你会养成一个很值得培养的习惯(S):

  1. 一个新的发展分支
  2. 每次你迈出重要的一步,都要做出改变(S)
  3. 在执行任何重要步骤后或在更改位置之前进行推送。
  4. 在改变位置后拉
  5. 完成分支后合并。

注意,几乎每个版本控制系统都需要这些步骤,但是名称不同。

票数 2
EN

Software Recommendation用户

发布于 2018-05-22 18:23:17

并不是专门为用例设计的,但是同步可能是一种选择。它是为节点之间几乎连续的数据同步而设计的(在最近的版本中,在某些配置下进行近乎实时的同步),虽然它没有您可能认为的传统版本控制,但它确实有一个稍微简单但健壮的版本控制系统(它允许只保留最后一个副本,保留一些按日期标记的副本,或者使用渐进的细化方案,甚至是外部脚本)。它也是自由和开放源码软件,使用最少的资源,并且不需要任何中央服务帐户(如果两个节点都在NAT防火墙之后,它可以通过外部服务器中继数据,但是中继节点只会看到加密的数据)。如果您只需要版本控制,以便可以回滚您对文件所做的更改,那么我就会这么做。

就更传统的VCS软件而言,Git应该很好,但有一个非常重要的警告:如果可能的话,您不应该将它用于二进制文件(它是为面向行的文本数据设计的,因此它在有效处理二进制数据方面非常糟糕)。虽然您关于Github的公共性质的观点是有效的(大多数情况下,有一个付费版本可以让您拥有私有存储库),但重要的是要了解您实际上并不需要使用Github。Git是一个专门的分布式版本控制系统,它在传统的客户机-服务器配置中工作得很好,就像Github使用的那样(这是大多数人使用它的方式),但是它在其他配置(例如网格拓扑)中也同样工作得很好。

在您的情况下,只要您可以获得一个工作系统和家庭系统都可以访问的系统,并且一直都在运行(而且同样重要的是,使用Windows以外的操作系统,这样您就不必尝试将Git作为服务运行在Windows上),您就可以将主存储库存储在那里,并按需要推送和提取它,就像使用Github一样(几乎是因为您没有很好的web界面或简单的Windows集成)。

票数 1
EN

Software Recommendation用户

发布于 2018-05-22 18:50:22

考虑到Git提供了整洁而复杂的版本控制方法,Git似乎是一个不错的选择。如果您想使用GitHub,但将您的存储库保持为私有,您可以每月支付GitHub 7美元,它们将允许您制作私有存储库。或者避免使用GitHub,使用两台计算机中的一台或第三台机器作为Git服务器;只需安装Git并设置SSH访问。注意,以与GitHub私有存储库相同或更低的价格,您可以租用一个虚拟私有服务器,用于Git以及其他任何东西。

票数 1
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/50264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档