像许多程序员一样,我很容易定期出现“灵感”,我会突然看到The Light并对我的代码进行大手术。通常情况下,这很好,但有时我后来发现 - 由于缺乏睡眠/咖啡因或仅仅是对问题的不完全理解 - 我做了一些非常愚蠢的事情。
当发生这种情况时,下一步是扭转伤害。最容易的是,这意味着我的编辑器中的撤销堆栈......除非我在某个时候关闭了文件。接下来是版本控制,但是如果我在最近的提交(我习惯性地不提交打破构建的代码)和灵感时刻之间进行了更改,那么它们就会丢失。它不在存储库中,因此代码从未存在过。
我想以这样的方式设置我的工作环境,我不必担心这一点,但我从来没有想出一个完全令人满意的解决方案。理想的情况是:
我考虑的选项:
有没有人知道可以让我得到我想要的工具或工具组合?或者我是否满足于相互矛盾的要求? (我非常怀疑。)
更新:仔细检查我已经使用(叹气)的工具后,结果发现我的text editor有非常漂亮的多备份功能,几乎完美地满足了我的需求。它不仅可以选择将所有备份存储在“隐藏”文件夹中(然后可以将其添加到VCS的全局忽略中),还可以在编辑器中进行浏览甚至差异备份。
问题解决了。感谢您的建议,伙计们!
答案 0 :(得分:3)
分布式版本控制。 (mercurial,git等......)
故事的要点是没有结账,只有存储库的克隆。
只有在您将其提交回主分支之前,您的提交才可见。
想做彻底的实验改变吗?克隆存储库,在您的计算机上进行大量提交。如果它工作,推回去;如果没有,那么只需回滚或废弃回购。
答案 1 :(得分:1)
如果您使用Windows Vista,7或Windows Server 2003或更高版本,则可以使用卷影复制。基本上,文件的属性窗口将有一个新选项卡“以前的版本”,用于跟踪文件的先前版本。
服务应该自动生成快照,但为了安全起见,您可以在“灵感”时刻之后立即运行以下命令
'vssadmin create shadow /for=c:\My Project\'
它肆无忌惮地拯救了我的屁股几次。
答案 2 :(得分:1)
大多数编辑器会在保存到备份文件之前存储文件的最新版本。您可以自定义该过程以附加修订号而不是正常的波浪号。每次保存时,您都会获得该文件的副本。如果这会占用太多磁盘空间,您可以选择为每个更改创建差异,并自定义编辑器以按顺序应用补丁,直到达到所需的修订。
答案 3 :(得分:0)
我认为是时候切换编辑了。 Emacs有一个变量版本控制,它确定Emacs在保存时是否会自动为文件创建多个备份,命名为foo .~1~,foo .~2~等。其他变量决定要保留多少备份副本。 / p>