Hi guys, thanks for the answer and the clarification. >From what you are saying I can see that this expects as designed. It's confusing in the submodule case, but I get you don't want to add extra rules which slow down performance and mess with other people at the same time. I will look into the git-dir solution, this seems to be exactly what I need. Thanks, Felix On Fri, Nov 4, 2016 at 5:36 PM, Johannes Schindelin <Johannes.Schindelin@xxxxxx> wrote: > Hi Felix, > > On Fri, 4 Nov 2016, Felix Nairz wrote: > >> Now, to the unexpected part, which I think is a bug: >> >> If the TestData folder is there, but empty (I deleted all the files), >> then running >> >> git -C .\TestData reset --hard >> >> will NOT throw me an error but run >> >> git reset --hard >> >> on the git repository (not the submodule in the sub-directory!), >> without warning, or error. > > I *think* that this is actually intended. Please note that -C is *not* a > synonym of --git-dir. It is more of a synonym of > > cd .\TestData > git reset --hard > > In other words, you probably expected -C to specify the top-level > directory of a worktree, and you expected Git to error out when it is not. > Instead, Git will treat -C as a directory *from where to start*; It *can* > be a subdirectory of the top-level directory of the worktree. > > Please note that > > git --git-dir=.\TestData\.git reset --hard > > will not work, though, as it mistakes the current directory for the > top-level directory of the worktree. What you want to do is probably > > git -C .\TestData --git-dir=.git reset --hard > > This will tell Git to change the current working directory to the > top-level of your intended worktree, *and* state that the repository needs > to be in .git (which can be a file containing "gitdir: <real-git-dir>", > which is the default in submodules). > > If the repository is *not* found, this command will exit with a failure. > > Ciao, > Johannes