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 が名前の変更をより適切に処理することを期待しています)。

それがうまくいかない場合、私は知りません...

そして、この TFS エラー メッセージについては、インターネットは役に立ちません :(

編集: それ以来、git-tfs は改善され、おそらく右の親コミットに延期されたと思います。

edit2: あまり調査する前に、--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 に答える