Tag: 版本控制

为什么3路合并优于2路合并?

维基百科表示,3路合并比2路合并更容易出错,而且往往不需要用户干预。 这是为什么? 一个3路合并成功和2路合并失败的例子会很有帮助。

我如何回滚TFS登机?

我想回滚一下我最近在TFS中做出的改变。 在Subversion中,这非常简单。 但是,这似乎是TFS令人难以置信的头痛: 选项1:获得以前的版本 手动获取每个文件的先前版本 检查编辑 失败 – 结帐(在VS2008)迫使我得到最新版本 选项2:获取TFS电动工具 下载团队基金会电动工具 从cmd行发出回滚命令 失败 – 如果还有其他未决更改,则不起作用 选项3:手动撤消更改 手动撤消我的更改,然后提交新的更改集 题 如何回滚到TFS中的以前的变更集?

Mercurial(hg)只提交某些文件

我试图只提交与Mercurial某些文件。 由于hg有自动添加,每当我尝试提交一个更改它想要提交所有文件。 但是我不希望这样,因为某些文件还没有“准备好”。 有 hg commit -I thefile.foo 但这只是一个文件。 对我来说更好的办法是,如果我可以closures自动添加在Git中。 这可能吗?

SVN:recursion地忽略一些目录

我不希望任何名为build或dist目录进入我的SVN,无论它在树中有多深。 这可能吗? 在混帐我只是把 build dist 在我的.gitignore在根,它recursion地忽略。 我如何做到这一点与SVN? 请不要告诉我每个父母的目录

删除所有本地变更集并还原到树

我正在使用Mercurial,当地有三个头,我陷入了一个糟糕的混乱局面。 我不能推,我只是想删除所有我的本地更改和提交,并重新启动完全干净的代码和一个干净的历史。 换句话说,我想结束(a)在本地完全相同的代码存在于远程分支的提示和(b)没有任何本地提交的历史。 我知道hg update -C覆盖任何本地更改。 但是,如何删除任何本地提交? 要清楚,我没有兴趣保存我在本地完成的任何工作。 我只想要最简单的方法来恢复到完全干净的本地结帐。

你可以“忽略”Perforce中的文件吗?

我有时使用Perforce P4V IDE中的“Reconcile Offline Work …”function同步从P4软件仓库断开连接的任何文件。 它启动另一个执行“文件夹差异”的窗口。 我有我从来不想检查到源代码控制文件(如bin文件夹中find的文件,如DLL,代码生成输出等)有没有办法来过滤这些文件/文件夹出现“新”,可能是添加。 他们往往把我真正感兴趣的文件列表搞乱.P4是否具有相当于Subversion的“忽略文件”function?

Git – 显示文件的历史?

可能重复: 使用Git版本化来查看文件的更改历史logging 有时我想要浏览一个特定文件的历史。 在过去,我使用了P4V,这非常快速直观。 右键单击文件并select历史logging。 滚动浏览date,并查看该date中该文件中更改的内容。 简单。 切换到git现在是一个艰巨的任务。 “git日志文件名” 看历史,select一个date,复制散列 “git diff散列” 在我感兴趣的文件中更改的内容滚动diff。 不,不是,那不是,让我们尝试一个不同的date – 回到第2步,冲洗并重复。 我search过,我已经尝试了几个常用的guis:github,gitk,gitg,git-gui。 这些都不需要手动运行命令,但工作stream程与此相同。 查看文件的历史logging; 查看提交; 通过比较大量无关文件来search。 这是缓慢和重复的。 所有的数据都在回购,所以我没有理由这个简单的常见用例不能更精简。 任何人都可以推荐一个工具,这样做 – 或者更有效的方式来利用命令行来做我想要的? 感谢您的任何build议。

进行持续集成时最佳的分支策略?

当你想要进行持续集成时,什么是最好的分支策略? 释放分支:在树干上开发,为每个版本保留一个分支。 function分支:在单独的分支中开发每个function,只有合并一次才能稳定。 同时使用这两种策略是否合理? 如在你分支每个版本,但你也支持大function? 这些策略之一是否与持续集成更好地匹配? 如果使用不稳定的中继线,使用持续整合更有意义吗?

提交更改到一个不同的分支比当前检出的分支与颠覆

我一直在研究从开发线检出的代码,发现所做的更改可能是重大更改,需要在提交到主开发树之前移到实验分支。 但是,我没有将实验分支签出,我不想丢失已经做出的更改。 有没有办法将工作文件夹中的更改提交到不同的分支比最初签出?

在Mercurial使用移植的后果

在Mercurial中维护发布分支时,最近有几个关于跳过修改的问题。 例如: Mercurial:分支具体变化在虚拟合并之后继续回来 为什么一个分支的Mercurial退出会影响其他分支? 自2.0版本推出以来,我一直在想使用graft来避免这个问题。 给定一个像这样的修订树: A—B—C—D—E—F—G—H—I—J 假设我们需要创build一个跳过邪恶变化E的释放分支。 hg update -r D hg graft "F::J" 给我们: A—B—C—D—E—F—G—H—I—J \ –F'–G'–H'–I'–J' Q1:这里发生了什么? 我可以理解, transplant将从F::J生成补丁,然后将它们应用到D ,但graft据说使用3路合并而不是补丁。 所以…….这是如何工作的? 为什么更好? 可以说,我现在修复E ,并将其合并到我的发布分支。 –E2—————– / \ A—B—C—D—E—F—G—H—I—J—M1 \ \ –F'–G'–H'–I'–J'———M2– M1是直接合并; 没有什么特别的。 M2正在合并具有“相同”(或至less等同)更改的分支。 Q2:这是合并使用D , J'和M1的正常3路合并吗? 问题3:mercurial存储/使用移植操作的额外信息来帮助合并? 最后… 问题4:像这样的stream程有什么潜在的问题?