【问题标题】:git-tfs: A shelved pending change on a file is requiredgit-tfs:需要对文件进行搁置的挂起更改
【发布时间】:2013-03-14 00:42:15
【问题描述】:

我正在试用 git-tfs,并尝试通过运行以下命令来取消搁置搁置集:

git tfs unshelve "Shelveset Name" shelf

我收到以下错误:

A shelved pending change on a file is required: $/path/to/dir/deleted

“deleted”是搁置集中删除的目录。

我只是从 git-tfs 开始。我需要签入那个搁置集,所以目前我可以单独使用 TFS 来完成,但如果可能的话,我想知道会发生什么并尽可能避免它。

感谢您的帮助。

【问题讨论】:

标签: git tfs git-tfs


【解决方案1】:

此错误消息不是 git-tfs 之一,而是 TFS 之一(我只是查看了源代码)。

我只是不记得 git-tfs 是如何管理搁置集的,因为自从我切换到 git-tfs 后,我再也没有使用过这个功能。主要是因为搁板的设计非常糟糕:(而且我认为你的问题来自那个设计问题!

使用搁置集,实际上是一堆文件差异,您永远不知道“生成”它的根变更集是什么。因此,如果您稍后尝试取消搁置它,您会遇到一些问题(就像我认为您遇到的问题),因为某些文件或文件夹被重命名或删除!

我认为你的问题来自于你试图用最近签出的 git commit 方式取消搁置。

尝试大约在搁置日期检查提交,然后取消搁置! 如果它有效,你应该只需要在你的分支上重新提交你的提交(希望 git 更好地处理重命名,它在大多数时间都这样做了)。

如果它不起作用,我不知道......

并且 Internet 无法帮助我们处理此 TFS 错误消息:(

编辑:从那时起,我认为 git-tfs 已经得到改进,也许它会取消搁置到正确的父提交。

edit2:在进行过多调查之前,请使用可以解决某些极端情况的--force 标志

【讨论】:

    【解决方案2】:

    您现在可以强制 git-tfs 忽略这些错误

    https://github.com/git-tfs/git-tfs/blob/master/doc/commands/unshelve.md

     --force   Get as much of the Shelveset as possible, and
               log any other errors
    

    https://github.com/git-tfs/git-tfs/issues/419

    【讨论】:

      【解决方案3】:

      TFS 似乎不喜欢尝试取消搁置包含已删除文件的搁置集。我做了以下事情并且成功了:

      • 在 Visual Studio 中取消搁置 (2012)
      • 排除所有已删除的文件
      • 再次搁置(来自 VS2012)
      • 使用 git-tfs 将搁置集拉到本地 Git 分支中
      • 手动删除已从原始搁置集中删除的文件

      我知道这很痛苦,但它至少帮助我挽救了搁置。就上下文而言,这是在从 TFS 迁移到 Git 的过程中,我们能够保留历史记录将搁置集拉到远程分支中,因此开发人员无需在签入不完整的情况下混淆 TFS。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-20
        • 2019-11-12
        • 2010-10-19
        • 2015-04-12
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多