我正在尝试使用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,但如果可能的话我想知道可能发生的事情并尽可能避免它。
感谢您的帮助。
答案 0 :(得分:4)
此错误消息不是git-tfs之一,而是TFS之一(我只看了源代码)。
我只是不记得git-tfs究竟是如何管理shelveset的,因为自从我切换到git-tfs后,我再也没有使用过这个功能。主要是由于搁架设计非常糟糕:(我认为你的问题来自于设计问题!
使用shelveset,实际上是一堆文件差异,你永远不知道从哪里生成“root”变换集。所以,如果你稍后试图取消它,你会遇到一些问题(比如我认为你有的问题)因为某些文件或文件夹被重命名或删除了!
我认为你的问题来自这样一个事实:你试图用一种过于近期的结帐git提交来取消搁置。
尝试大约在搁置集的日期签出提交,然后取消搁置! 如果它有效,你应该只需要在你的分支上重新设置你的提交(希望git能够更好地处理重命名,它在大多数时候都会这样做)。
如果不起作用,我不知道......
互联网无法帮助我们解决此TFS错误消息:(
编辑:从那以后,我认为git-tfs已得到改进,也许它对正确的父提交没有帮助。
edit2:在调查过多之前,使用可以解决某些边缘情况的--force
标志
答案 1 :(得分:2)
似乎TFS不喜欢尝试取消搁置包含已删除文件的搁置集。我做了以下工作并且有效:
git-tfs
将搁置集拉入本地Git分支痛苦,我知道,但它至少帮助我挽救了搁架。对于上下文,这是在从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