- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Mercurial 的新手,并且不知何故仍处于评估过程中,所以这四个概念对我来说有点困惑。有些被提到等同于 Git 的 Staging/Index 概念,有些甚至比 Git 的 Staging 更好。hg graft
四个命令怎么做, hg record
, hg qrecord
Và hg shelve
(Và hg transplant
,但这已在 Graft vs. Transplant 中解释)相互比较,以及 的概念如何队列 Và Mục lục ?在哪些用例中选择一个而不是另一个?
我知道每个页面都有帮助页面,但是仍然很难弄清楚每个页面的作用,因为 VCS 通常对我来说是一个新主题。
1 Câu trả lời
Mercurial 的设计根本不包括暂存区的概念。即本地修改和提交之间没有中间状态。
以下是您提到的每个概念的概述:
hg graft
相当于 git cherry-pick
.它将提交从一个分支复制到另一个分支。此功能的典型用例是将错误修复从一个发布分支复制到另一个。此命令替换旧的(现在已过时) hg transplant
延期。
hg record
Và hg qrecord
类似于 git add --patch
.它们允许您以交互方式选择要提交的 block 。因此,如果您修改了一个文件的多个不同区域,您可以选择您实际想要提交的区域(即大块)以及您想要保留哪些区域作为本地修改。qrecord
仅当您拥有 mq
时才可用启用。它 promise mq
补丁而不是标准提交。
hg shelve
类似于 git cất giữ
.它允许您暂时搁置对文件(或文件大块)的本地修改。然后这些修改可以是unshelved
当你准备好迎接他们的时候。dirstate
是 Mercurial 源代码的内部类。它不会暴露给用户。
Mercurial Queues
(也称为 mq
)可能是您最接近 Mercurial 中转区的位置。以下是 Mercurial wiki 的描述:
Changes are maintained as patches which are committed into Mercurial. Commits can be removed or reordered, and the underlying patch can be refreshed based on changes made in the working directory. The patch directory can also be placed under revision control, so you can have a separate history of changes made to your patches.
mq
通常用于完善/返工您在本地测试但尚未推送到公共(public)位置的提交。有些人还使用它来维护对 3rd 方代码的一组修改。
关于Mercurial:移植 vs. 记录 vs. qrecord vs. shelve vs. 移植 vs. dirstate vs. queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631273/
Tôi mới làm quen với Mercurial và vẫn đang trong quá trình đánh giá nên bốn khái niệm này có chút khó hiểu với tôi. Một số được cho là tương đương với khái niệm Staging/Index của Git và một số thậm chí còn tiên tiến hơn cả Staging của Git.
Tôi là một lập trình viên xuất sắc, rất giỏi!