Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 本地备份源的自动版本控制_Git_Mercurial_Versioning - Fatal编程技术网

Git 本地备份源的自动版本控制

Git 本地备份源的自动版本控制,git,mercurial,versioning,Git,Mercurial,Versioning,当使用版本控制系统时,人们通常会产生“干净”的提交,即实际上有意义的、可编译的提交(对于其他开发人员来说,这很好) 这样做的自然结果是,提交通常很晚才完成(“当它工作时”) 它减轻了版本控制的一个好处:能够恢复到“它曾经工作过”的状态,并且不会删除大量尚未提交的代码 Eclipse对此有一个内置函数(本地历史),但它依赖于IDE 流行的VCS(git、mercurial..)有没有类似的机制,可以作为扩展/插件 理想情况下,它不会干扰主提交历史记录,而是维护一个并行的“未提交更改的历史记录” 如

当使用版本控制系统时,人们通常会产生“干净”的提交,即实际上有意义的、可编译的提交(对于其他开发人员来说,这很好)

这样做的自然结果是,提交通常很晚才完成(“当它工作时”)

它减轻了版本控制的一个好处:能够恢复到“它曾经工作过”的状态,并且不会删除大量尚未提交的代码

Eclipse对此有一个内置函数(本地历史),但它依赖于IDE

流行的VCS(git、mercurial..)有没有类似的机制,可以作为扩展/插件

理想情况下,它不会干扰主提交历史记录,而是维护一个并行的“未提交更改的历史记录”

如果这样的东西不存在,我可能会想写一本

澄清: 我很了解本地分支+重基或histedit,但我要求提供一个自动化且易于安装的解决方案。如果我必须经常提交,我可能会忘记/懒得去做,特别是如果它意味着以后对每个真正的提交进行手动清理(重基部分)。
主要目标是为开发人员提供一个安全网,人们通常意识到他们需要这个安全网,就在他们已经坠落的时候…

我不知道有任何工具可以做到这一点,但你可以使用Git来实现

创建一个本地分支并处理它(经常提交、恢复等)。 一旦您对这项工作感到满意,就可以使用
git-rebase-i
将所有的小提交压缩成一个(或多个)大提交到您的开发分支中。

您可以(在Mercurial,f.e中):

  • WIP提交的分支,在该分支中,您提交脏工作并仅在某个“稳定点”之后将此分支合并到主线中,并且只有这些合并集应该是其他人感兴趣的(使用
    push-b$mainline
    而不是默认的“push all”,您不会发布任何未完成的工作)
  • (或),其中一组补丁|队列中的补丁是您当前的工作(且未共享|发布),抛光补丁转换为永久变更集并成为(可推送)历史的一部分

在mercurial中,我这样做的方式就是将“hg commit--amend”与evolve扩展结合使用

通常,(假设您当前的修订是一个head变更集)“commit--amend”将修改您当前的父变更集。所以,你会在每一点上做这件事,你决定你有值得保存的东西。这可以让历史保持干净,正如您所希望的那样

当与“commit--amend”结合使用时,会将以前的提交保留为隐藏的变更集。使用“hg log-HINDED”可以看到这些隐藏的更改(当按下右键时,也可以在tortoise中看到)。因此,您可以返回并查看所有部分工作,但隐藏的变更集不会被推送


另外,不要太担心evolve扩展的“实验”状态。它经过了很好的测试。

您看过任何分布式VC系统吗?我很确定git(等)的本地分支与您所寻找的非常接近。也许可以在上面撒一些自动化帮助(cron等),为什么不创建一个垃圾分支,在那里你可以做一些测试,甚至提交不好的不可编译代码呢?你在这个分支工作,如果它到了某个地方,你可以将它合并到主分支中,否则它就会变成垃圾。你仍然需要承诺,但因为你不在乎承诺不好的事情,你可以经常这样做。“晚而好的承诺”是今天不好的风格和反模式