- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 Mercurial,我想我正在尝试做一些非常简单的事情,一些应该非常典型的事情,但我很困惑为什么它如此复杂,以及为什么它不能正常工作应该(国际海事组织)。
我与 friend 共享一些存储库,他做了一些更改并检查了几个文件并推送它们。现在在 svn 中,我习惯于只更新我的工作副本并获取他的更改,没有麻烦。但显然我必须与 Mercurial merge 。我不明白的是:mercurial 是否应该足够聪明才能弄清楚,如果我的 friend 进行了最新的更改,并且我没有触及这些文件,那么它应该只使用他的文件版本?显然它无法弄清楚这一点,而是尝试 merge 完全失败的文件(实际上我已经安装了自动打开的Beyond Compare,所以我不能将错误的 merge 完全归咎于mercurial)。
无论如何,我不知道为什么它甚至必须“merge ”文件,因为(对我来说)很明显它应该只进行远程(即最近的)更改。我在使用该工具的方式上是否做错了什么,或者我可以做些什么来让它以更简单的方式工作(我习惯于在颠覆中工作的方式)...是否有任何配置设置,有关命令行标志的任何提示我可以用来让它更好地工作吗?最佳答案
如果您也已在存储库中提交,则只需 merge 。如果你与你的 friend 共享存储库,他会在你不做任何事情时提交一次或多次,当他完成后你所要做的就是拉取和更新,而不是 merge 。
如果您已完成本地提交,则该场景的展开方式如下:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4
他 promise :
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4---5---6
您 promise :
local: 1---2---3---4---X---Y
central: 1---2---3---4
friend: 1---2---3---4---5---6
他推:
local: 1---2---3---4---X---Y
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
你拉:
local: 1---2---3---4---X---Y
\
+-5---6
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
您 merge :
local: 1---2---3---4---X---Y---7
\ /
+-5---6-+
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
然后你推,他拉,所有存储库都是相同的。
但是,如果您在他参与该项目期间没有做任何事情,那么该场景将如下所示:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4
他 promise :
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4---5---6
他推:
local: 1---2---3---4
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
您拉取并更新:
local: 1---2---3---4---5---6
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
<小时/>
这与 Subversion 的做法不同的原因是,使用 Subversion,您拥有每个人都必须与之交谈的集中存储库。
因此,当您提交本地更改时,Subversion 客户端会说“抱歉,您需要先更新才能提交”,并且您必须执行该更新。
如果此时您更改的文件也在中央存储库中进行了更改,Subversion 会将您的本地更改与服务器更改 merge ,并将您的修订点更新到提示。如果没有冲突,这将是静默 merge ,否则您将遇到 merge 冲突。
Mercurial 做完全相同的事情,只是 merge 不是静默的。你们都可以在自己的本地存储库中单独提交,而无需相互交谈,但是当您尝试将所有更改集成到一个公共(public)存储库中时,您需要 merge 。 Mercurial 永远不会更改现有变更集(除非您使用某些扩展来进行历史编辑),因此它不能自动确定并行变更集如何协同工作。
如果你们两个没有处理过相同的文件,或者您对相同文件所做的更改彼此不冲突,那么只需单击几下即可完成 merge 。
无论如何,Mercurial 有很多选择,但分布式部分确实改变了您思考历史的方式。
关于mercurial - 为什么 Mercurial merge 时很笨?如何使拉取/merge 更改变得更简单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5100563/
我是一名优秀的程序员,十分优秀!