git-tfs:需要对文件进行搁置的挂起更改

时间:2013-03-24 14:10:25

标签: git tfs git-tfs

我正在尝试使用git-tfs,我正试图通过运行以下内容来取消搁置搁置:

git tfs unshelve "Shelveset Name" shelf

我收到以下错误:

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

“deleted”是在shelveset中删除的目录。

我只是从git-tfs开始。我需要检查那个搁架,所以暂时我可以单独使用TFS,但如果可能的话我想知道可能发生的事情并尽可能避免它。

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

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

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

使用shelveset,实际上是一堆文件差异,你永远不知道从哪里生成“root”变换集。所以,如果你稍后试图取消它,你会遇到一些问题(比如我认为你有的问题)因为某些文件或文件夹被重命名或删除了!

我认为你的问题来自这样一个事实:你试图用一种过于近期的结帐git提交来取消搁置。

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

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

互联网无法帮助我们解决此TFS错误消息:(

编辑:从那以后,我认为git-tfs已得到改进,也许它对正确的父提交没有帮助。

edit2:在调查过多之前,使用可以解决某些边缘情况的--force标志

答案 1 :(得分:2)

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

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

痛苦,我知道,但它至少帮助我挽救了搁架。对于上下文,这是在从TFS迁移到Git期间,我们能够将历史记录保留到远程分支中,因此开发人员不需要使用不完整的签名来混淆TFS。

答案 2 :(得分: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