在Mercurial中,是否存在一个命令可以列出当前所有受源代码控制的文件?
我可以执行dir /s
来列出我文件夹和子文件夹中的所有文件,但我不知道哪些文件已被添加到我的存储库中。我有各种被排除的文件类型和文件夹,并且我想验证在设置它们为我的.hgignore文件之前是否没有将它们添加。
在Mercurial中,是否存在一个命令可以列出当前所有受源代码控制的文件?
我可以执行dir /s
来列出我文件夹和子文件夹中的所有文件,但我不知道哪些文件已被添加到我的存储库中。我有各种被排除的文件类型和文件夹,并且我想验证在设置它们为我的.hgignore文件之前是否没有将它们添加。
hg status --all
会列出树中的所有文件,并用一个字母表示它们的状态:M 表示已修改,C 表示干净(由 hg 拥有),I 表示被忽略的。
要查看被忽略的文件,请使用 hg status -i
。要查看下一次提交时将添加的文件,请使用 hg status -a
。这些选项只显示您需要了解的内容,不需要扫描长文件列表。
hg locate
命令,我通常在想限制文件到特定目录时会加上 -I
选项一起使用。hg locate
从存储库("root")目录开始:
hg locate -I dir/sub_dir/dir_of_interest
根据您运行命令的目录,传递给 -I
的路径需要更改。例如,如果您从上面的 dir
目录中运行命令,则需要修改您的参数以定位:
hg locate -I sub_dir/dir_of_interest
输出文件列表将保持不变,显示每个文件在仓库中的完整路径。
尝试运行 hg help -v locate
获取更多信息。
hg locate
,你可以通过 hg locate -I \
pwd`` 自动获取当前目录。 - Benjohnhg locate
。 hg status -i
将仅列出被忽略的文件。 hg status -a
将仅列出将在提交时添加的文件。使用hg locate
存在用户错误与期望列表不符的风险。hg locate
非常有用的地方是在任何/所有修订版本中搜索特定文件名。同样,hg grep
也会在任何/所有修订版本中搜索所有文件内容。 - Benjohnhg manifest
会列出仓库中的所有文件,而 hg status --all
将列出存储库结构中的所有文件,并包括一个标记,用于标识哪些文件正在被跟踪,哪些不是。
要仅列出已忽略的文件,请执行: hg status -i
。
要仅列出已添加的文件,请执行:hg status -a
。
如果您不想输入太多,可以将其缩短为hg sta -i
和hg sta -a
。
这两种使用status
比locate
更简单,并且会给出您关心的特定文件状态,因此出错几率显著降低。
hg status
的内容要列出Mercurial仓库中的所有文件,请执行:hg status --all
。
当它们被列出时,文件名称前面会有一个前缀:
M = modified
A = added
R = removed
C = clean
! = missing (deleted by non-hg command, but still tracked)
? = not tracked
I = ignored
hg st --all MyFolder
- MyFolder 中的所有文件hg sta -i MyFolder
- 仅在 MyFolder 中忽略的文件。-i
(表示“已忽略”)和 -a
(表示“已添加”)之外,还有其他标志可用。
status
命令。该答案因作者试图展示您可以通过像这样向 Mercurial “询问” status
命令来发现上述所有内容而受到负面评价。hg help status
您可以通过以下方式向Mercurial询问其任何命令。如果您想获取Mercurial命令列表,请输入hg help
。
--help
//?
/man
和其他文档,因为在stackoverflow上问比阅读更快?我拒绝删除我的回答 :) - simendsjostatus
作为hg
命令之一,实际上首先会执行此操作。我每天都使用Mercurial,但我不知道它可以显示被忽略的文件。 - Benjohn--all
)甚至没有显示在屏幕上(你必须滚动才能看到它);而且你根本没有提供实现目标的实际措辞。总体而言,帮助程度不高。相比之下,Benjohn首先给出所需命令,然后提供解释。 - Ethan Furman