Hg文档指出,hg
不支持类似于git的索引功能,并建议使用扩展(record或mq)实现相似行为。
首先,我对git
的领域经验非常少,所以让我来阐述一下我对git中staging概念的理解:
- 有一个工作副本,其中包含许多已更改的文件,每个文件都有多个已更改的块。
- 然后用户(可能反复)使用
git add
选择将要提交哪些文件。 - 或者,使用
git add -p
仅选择文件中的某些块以供稍后提交。 - 执行
git commit
以将之前选择的更改添加到存储库中。
因此,整个staging area
对我来说是一个华而不实的名称,用于选择哪些更改将在下次提交中生效。
如果我没有完全理解错误,那么为什么每个人,包括官方文档,都说Mercurial不支持这个呢?
我想问,因为上面精确的工作流在TortoiseHg中是非常简单的:
- 在左窗格中选择要包含在提交中的整个文件
- 在右下窗格中选择单个块以包含
- 点击'Commit'。
我不知道TortoiseHg使用的是哪些hg
命令,但同样的,我从未需要关心。 (据我所知,它没有使用任何扩展来实现这一点)
我是否错过了更多与git staging相关的概念?
histedit
扩展是将多个提交合并为一个的方便工具。 - Oben Sonnegit reset
,并且这篇文章基于这些知识。 - Cristian Diaconescu