git-tfs: A shelved pending change on a file is required

I’m trying out gittfs, and I’m trying to unshelve a shelveset by running the following:

git tfs unshelve "Shelveset Name" shelf

I’m getting the following error:

  • Download, Revise, Upload Github Gists with R
  • How to remove git repository created on desktop
  • Github: how to fork after cloning?
  • How to reset sourcetree settings/preferences
  • How to sign out in Git Bash console in Windows?
  • Remove credentials from Git
  • A shelved pending change on a file is required: $/path/to/dir/deleted
    

    “deleted” is a directory that was deleted in the shelveset.

    I’m only just starting with git-tfs. I need to checkin that shelveset, so for the time being I can do it with TFS alone, but if possible I’d like to know what might be going on and avoid it if possible.

    Thanks for any help.

  • Best practices for cross platform git config?
  • JGit sets git: URI instead of https: for remote on CircleCI
  • Database Version / Change Control for Data not Schema?
  • How can I make git am / git apply work “fuzzy” like the patch command
  • how to solve git error while installing linkedin from git://github.com/pengwynn/linkedin.git?
  • Difference between git pull and git pull --rebase
  • 3 Solutions collect form web for “git-tfs: A shelved pending change on a file is required”

    It seems that TFS dislikes trying to unshelve shelvesets that contain deleted files. I did the following and it worked:

    • Unshelve in Visual Studio (2012)
    • Exclude any deleted files
    • Shelve again (from VS2012)
    • Use git-tfs to pull the shelveset into a local Git branch
    • Manually delete the file(s) that had been removed from the original shelveset

    A pain, I know, but it at least helped me salvage the shelveset. For context, this was during a migration from TFS to Git in which we were able to retain history and pull shelvesets into remote branches so developers didn’t need to muddy TFS with incomplete checkins.

    This error message is not one of git-tfs but one of TFS (I just looked at the source code).

    I just don’t remember exactly how git-tfs manage shelveset because since I switch to git-tfs I never used again due to the fact that shelvesets are very badly designed 🙁 And I think that your problem come from that design problem!

    With a shelveset, which is in fact a bunch off file diff, you never know what is the root changeset from where it was “generated”. So, if you try to unshelve it quite later, you’ve got some problems (like the one I think you have) because file or folder were renamed or removed!

    I think that your problem come from the fact that you try to unshelve with a checkouted git commit too recent.

    Perhaps try to checkout a commit approximatively at the date of the shelveset and try to unshelve!
    If it works, you should just have to rebase your commit on your branch.

    If it doesn’t work, I don’t know…

    And Internet doesn’t help us with this TFS error message 🙁

    edit: since then, I think that git-tfs has been improved and perhaps it unshelve to the right parent commit.

    You can now force git-tfs to ignore these errors

    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

    Git Baby is a git and github fan, let's start git clone.