Elijah Newren <newren@xxxxxxxxx> writes: >> Why does Git have to delete and then create again the directory when it >> is already there? >> >> >> This isn't a big issue, but it is very odd that git deletes the working >> directory. > > It was deleted by the rebase operation, because rebase (currently) > works by first checking out the target commit onto which it will apply > all your local patches. That target didn't have the directory; the > directory was added by your local patches. So checking out that > commit necessarily deletes the directory. Then rebase applies each of > your local patches, one by one, updating the working directory as it > applies them. Since your local patches create that directory, it gets > re-created by this process. This is one of the reasons why "rebase" (especially "rebase -i") may want to insist starting at the top-level of the working tree, like "git bisect" does. Because running the command from a subdirectory works most of the time until it doesn't, people tend to complain why they should go up to the top-level before they can run the command. And this is why---it causes end-user confusion.