6

我正在尝试 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 来完成它,但如果可能的话,我想知道可能会发生什么,并尽可能避免它。

谢谢你的帮助。

4

3 回答 3

4

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

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

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

我认为您的问题来自这样一个事实,即您尝试使用最近签出的 git commit 方式取消搁置。

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

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

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

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

编辑2:在调查太多之前,使用--force可以解决一些边缘情况的标志

于 2013-03-25T14:44:55.573 回答
3

您现在可以强制 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

于 2016-02-24T14:10:09.027 回答
2

TFS 似乎不喜欢尝试取消搁置包含已删除文件的搁置集。我做了以下,它的工作:

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

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

于 2013-11-08T21:48:06.937 回答