Hello, I am trying to add a file to an arbitrary branch without touching the current worktree with as little overhead as possible. For this, the sparse-checkout feature in conjuntion with the "shared repository" feature seems to be perfect. The basic idea goes like this: TMP=`mktemp -d /var/tmp/test-XXXXXXXXX` GD=$TMP/git WD=$TMP/wd git --work-tree $WD --git-dir $GD clone -qns -n . $GD git --work-tree $WD --git-dir $GD config core.sparsecheckout true echo path/of/file/which/I/want/to/create >>$GD/info/sparse-checkout git --work-tree $WD --git-dir $GD checkout -b some-branch remotes/origin/some-branch # !!! ( cd $WD mkdir -p path/of/file/which/I/want/to echo huhuh >path/of/file/which/I/want/to/create git --work-tree $WD --git-dir $GD add path/of/file/which/I/want/to/create git --work-tree $WD --git-dir $GD commit git --work-tree $WD --git-dir $GD push ) rm -rf $TMP Unfortunately, the marked command errors out with "error: Sparse checkout leaves no entry on working directory" and won't create/switch to the branch that is to be modified. Strange enough, I have some repositories at this machine where the .git/info/sparse-checkout file contains only non-existing files and git happily executes this "git checkout -b XXX remotes/origin/XXX" command leaving the working tree totally empty all the time. Someone understands this inconsistent behaviour? -- Josef Wolf jw@xxxxxxxxxxxxx