相关疑难解决方法(0)

Mercurial和Git有什么区别?

我一直在Windows上使用git一段时间(使用msysGit),我喜欢分布式源代码控制的想法.就在最近,我一直在关注Mercurial(hg),它看起来很有趣.但是,我无法解决hg和git之间的差异.

有没有人在git和hg之间进行并列比较?我很想知道hg和git的不同之处,而不必参加讨论.

git version-control comparison mercurial dvcs

727
推荐指数
16
解决办法
59万
查看次数

为什么git默认执行快进合并?

来自mercurial,我使用分支来组织功能.当然,我也想在我的历史中看到这种工作流程.

我使用git开始了我的新项目并完成了我的第一个功能.合并该功能时,我意识到git使用快进,即如果可能,它会将我的更改直接应用到主分支并忘记我的分支.

因此,思考未来:我是唯一一个从事这个项目的人.如果我使用git的默认方法(快进合并),我的历史将导致一个巨大的主分支.没有人知道我为每个功能使用了一个单独的分支,因为最后我只有那个巨大的主分支.这看起来不专业吗?

通过这种推理,我不想要快进合并,也不知道为什么它是默认的.这有什么好处的?

git git-merge fast-forward git-branch

637
推荐指数
2
解决办法
15万
查看次数

Git与Mercurial存储库的互操作性

我在Mac上使用GIT.说够了.我有工具,我有经验.我想继续使用它.这里没有战争......

问题始终在于互操作性.大多数人都使用SVN,这对我来说很棒.Git SVN开箱即用,是一个没有多余装饰的解决方案.人们可以继续愉快地使用SVN,我不会丢失我的工作流程,也不会丢失我的工具.

现在......有些人和Mercurial一起来了.对他们来说很好:他们有他们的理由.但我找不到任何GIT HG开箱即用.我不想切换到HG,但我仍然需要与他们的存储库进行互操作.

你们中的任何人都知道一个简单的解决方案吗?

git version-control mercurial interop dvcs

194
推荐指数
7
解决办法
4万
查看次数

Git是一个善变的客户?为什么没有git-hg?

这是一个困扰我一段时间的问题.我完成了我的作业并检查了stackoverflow,至少找到了关于我的问题的两个主题: Git for Mercurial,如git-svnGit与Mercurial存储库的互操作性

我已经做了一些严肃的谷歌搜索来解决这个问题,但到目前为止没有运气.我还阅读了Git Internals的书,以及Mercurial Definitive Behind the Scenes来试图解决这个问题.我仍然有点疑惑为什么我找不到任何合适的git-hg类型的工具.

从我的角度来看,git-svn是其中一个主要特性,为什么我选择在工作中使用git而不是mercurial.它允许我使用我喜欢的工作流程,如果他们不在乎,没有其他人需要打扰.我只是没有看到使用中间hg repo来回转换的重点,正如其中一个链中所建议的那样.

所以无论如何,从我读过的内容来看,hg和git在概念设计上看起来非常相似.引擎盖下存在差异,但这些都不会阻止为hg创建git客户端.在我看来,远程跟踪分支和章鱼合并使得git比hg更强大.

那么,真正的问题是,为什么git-hg不存在(或者至少很难找到)有任何真正的原因吗?git用户(和开发人员)对他们的hg对手是否有一些敌意导致缺乏git-hg工具?你们有没有计划开发类似的东西,并公开上市?我可以自愿参加(尽管有非常微弱的C技能)参与完成这项工作.我只是没有完全的知识来自己开始这个.

这可能是结束所有DVCS战争的工具吗?

git mercurial interop

73
推荐指数
5
解决办法
2万
查看次数

Git能否真正跟踪单个函数从1个文件到另一个文件的移动?如果是这样,怎么样?

有几次,我遇到过这样的说法:如果你将一个函数从一个文件移动到另一个文件,Git可以跟踪它.例如,这个条目说,"Linus说,如果你将一个函数从一个文件移动到另一个文件,Git会告诉你整个移动过程中单个函数的历史."

但我对Git的一些引擎盖设计有一点了解,我不知道这是怎么回事.所以我想知道......这是正确的陈述吗?如果是这样,这怎么可能?

我的理解是Git将每个文件的内容存储为Blob,每个Blob都有一个全局唯一的标识,该标识来自其内容和大小的SHA哈希.然后Git将文件夹表示为树.任何文件名信息都属于Tree,而不属于Blob,因此文件重命名例如显示为对Tree的更改,而不是Blob.

因此,如果我有一个名为"foo"的文件,其中包含20个函数,以及一个名为"bar"的文件,其中包含5个函数,我将其中一个函数从foo移动到bar(分别生成19和6), Git如何检测到我将该函数从一个文件移动到另一个文件?

根据我的理解,这将导致2个新的blob存在(一个用于修改的foo,一个用于修改的条).我意识到可以计算diff以显示函数从一个文件移动到另一个文件.但是我没有看到关于函数的历史如何可能与bar而不是foo相关联(反正不是自动的).

如果Git的是真正看里面单个的文件,并计算每个函数BLOB(这将是疯狂的/不可行的,因为你必须知道如何解析任何可能的语言),那么我可以看到这是可能的.

所以...声明是否正确?如果它是正确的,那么我理解中缺少什么?

git git-diff git-log

66
推荐指数
4
解决办法
8415
查看次数

为什么你使用Git而不是Mercurial?(或相反亦然.)

我目前使用Git,我对它很满意,但我想更多地了解Mercurial.它比Git有什么优势吗?Git比Mercurial有什么优势?

我意识到已经对这两者进行了详细的比较,但这不是我要求的.我不想要冷静的信息,而是慷慨激昂(但礼貌!!!)的理由,为什么你认为一个更好/更容易/更快/更聪明/更强大等等.

git mercurial dvcs

26
推荐指数
9
解决办法
5320
查看次数

Git/Mercurial(hg)意见

首先,让我说我不是一个专业的程序员,而是一个需要它并且必须学习的工程师.我一直独自工作,所以只有我和我的七个分裂的人物...我们作为一个团队工作:)我的大部分东西都是用C/Fortran/Matlab完成的,到目前为止我一直在学习git to管理一切.然而,尽管我没有任何无法解决的问题,但我从来没有对它"满意"......对于我不能做的一切,我必须查阅一本书.而且,一段时间以来,我一直听到很多关于Mercurial的好东西.
现在,我的一位同事将不得不在一个项目上与我合作(我几乎为他感到难过)并且他开始学习Mercurial(他说更喜欢它),我正在考虑自己的转换.

我们几乎只在Windows平台上工作(尽管我使用Unix工具和来自这个地区的东西管理相对比较好).

所以,我想知道,在一个描述的场景中,我对切换有什么问题.我听说Mercurial对于Windows用户来说对用户界面更加友好.

它如何处理存储库?它是否以与git相同的方式创建它们(只是工作目录中的一个子目录)并且我可以只复制整个项目目录(包括git repo)并将它们带到某个地方而无需额外的思考?(当我选择git/svn时,我真的很喜欢).

你有什么好书可以推荐(比如Pro Git,只适用于Mercurial).

有什么好方法可以将Mercurial实现到Visual Studio/GVim for Windows或Windows资源管理器中以便我可以相对轻松地工作(我想避免使用命令行来处理有关它的所有内容,例如在git shell中).

还有其他我应该注意的事情(拜托,请不要指出其他问题......他们只是给我一些信息,而且我不确定我应该把它当作什么重要,什么可以忽视).我正在努力减少一些时间,因为我无法花时间重新学习Mercurial,就像我为git做的那样.

我也听说过git是c项目,而mercurial是python ......速度上有明显的差别.git非常快......在工作的时候我会遇到一些等待.

注意:我所有的项目都是中间尺寸......主要是数值模拟... 10-15000行(中等大小?)

git mercurial

25
推荐指数
7
解决办法
4391
查看次数

Mercurial在哪些方面比TFS更好/更差?

我刚刚加入了一家新公司,目前我们正在使用Microsoft SourceSafe作为我们的存储库.这些设置并不理想,但事实证明这是一个很大的痛苦.

我最近使用Mercurial并认为它很棒,所以我主张转换到那个,但看起来该公司已经拥有Team Foundation Server许可证并希望使用它.

任何人都可以给我一个积分列表,其中一个比另一个好吗?我没有使用TFS,所以我不知道它的优点/缺点.

version-control tfs mercurial visual-sourcesafe

25
推荐指数
3
解决办法
7681
查看次数

Git在Windows上有哪些局限性?

我读到Mercurial和Git的所有地方,他们通常会抛出一两行,这意味着Git在Windows上的能力有限(因为有些Shell程序无法移植等等),但我从未遇到过明确提及它们的页面.而且大多数页面都有点旧.

Git在Windows上的功能有哪些限制?是否必须在MinGW上运行Git和Windows上的MSYS有性能限制?

git version-control msysgit

23
推荐指数
2
解决办法
7006
查看次数

为什么Git不将分支名称存储为提交的一部分?

请注意:我不是要重新启动Mercurial或Git更好的论点,我只是有一个技术问题,我作为Mercurial用户,不明白.我也不确定SO是否是提出这样一个问题的正确位置,但它编程相关.

关于两个版本控制系统Git和Mercurial如何从用户的角度来看彼此不同(例如Mercurial和Git之间有什么区别?http://felipec.wordpress.com/2011/01)/16/mercurial-vs-git-its-all-in-the-branches /),主要区别在于分支机构的处理.我已经阅读了很多这些讨论,但我一直在问自己这个问题:

为什么Git不将分支名称存储为提交的一部分?

我真的没有理由不这样做; 这意味着数据不能简单地消失,因为没有参考(标记,分支,等等).

我认为在提交中存储分支是Mercurial的一大优点,因为这会使丢失数据变得更加困难.

Git人群的主要观点是支持Git的分支模型,你可以简单地删除分支,并不会阻止Git在每次提交时存储分支的名称:如果删除了分支的提交,那么对该分支的引用.它也不会干扰"廉价分支"的论点:分支管理起来不会更昂贵.我不认为所需的额外存储应该是值得关注的:每次提交只需几个字节.

git mercurial branch git-branch

11
推荐指数
2
解决办法
1115
查看次数