【问题标题】:How to Hg Shelve Added files uncommitted yet如何 Hg Shelve 添加了尚未提交的文件
【发布时间】:2012-10-22 06:40:33
【问题描述】:

我正在使用 Mercurial Shelve extension 从命令行搁置更改。它工作得很好,除非我想搁置的更改在工作目录中包含新添加的文件(a)。基本上,它会搁置除新添加的文件之外的所有内容。我通过查看 .hg/shelve 存储的更改来检查这一点。

如何搁置新添加的文件(一种状态)?

【问题讨论】:

  • 未跟踪的文件不一定要搁置,因为后续的 HG 操作不会影响它们。

标签: mercurial shelving


【解决方案1】:

此回复逾期,但您可以使用以下命令搁置所有文件(跟踪/取消跟踪):

hg shelve -A

hg shelve --addremove

关于这个命令,文档说:

在搁置之前将新/丢失的文件标记为添加/删除

您必须注意使用此功能,因为在取消搁置后,您的旧未跟踪文件会被跟踪。 如果在 hg commit 命令中没有指定文件,这些文件已经在最后一次提交中提交。如果你想再次取消跟踪,你应该使用 hg forget。

【讨论】:

  • 请注意,添加不会提交它们!
  • 是的,在 hg shelve -A 未跟踪的文件被跟踪但未提交之后。如果在 hg commit 命令中没有指定文件,则它们已经在最后一次提交中提交。我完成我的答案更具体。感谢您的评论:)
  • 谢谢 :) ... 这很明显,但通常我会在提交中添加文件,所以这一点让我有点过了 :S
【解决方案2】:

我假设您在谈论当前未跟踪的文件?您需要添加第一个。

所以只需为您的新文件执行hg add,然后hg shelve 也会将它们搁置。

【讨论】:

    【解决方案3】:

    谢谢汤姆。我正在使用Mac,所以它并没有真正起作用。起作用的是另一个反复无常的扩展“hgattic”,您可以在我的博客中阅读更多信息

    http://margotskapacs.com/2012/10/shelving-uncommitted-changes-in-mercurial/

    (请参阅“错误 - 添加的文件无法搁置”部分)

    【讨论】:

      【解决方案4】:

      如果命令行不是绝对必要的:

      然后只需键入(在 Linux 上)

      thg shelve
      

      这使您可以轻松搁置已添加(但尚未提交)的文件。

      【讨论】:

      【解决方案5】:

      作为一个主要使用 Git 的用户,我发现 Atlassian SourceTree 是处理我必须使用的奇怪 Mercurial 存储库的最简单方法。它内置了搁板。价格也合适(免费)。

      免责声明:我为 Atlassian 工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-01
        相关资源
        最近更新 更多