I think that does not exactly possible, what you want. But the result of this is nearly same:
git checkout D # checkout (step) to the D commit /this does not modify the master branch/
git branch develop # create develop branch, based on D
git checkout develop # now you stand on D commit
git push origin develop # push the new branch to repo, named origin
git checkout master # now you stand on E commit again
This is the way to create your develop branch. Anyvaw a branch points to a commit. Or if you like this better, the branch is only an alias of a commit in the commit graph. For imagine we can think about a road in the commit graph, but actually it does not metter i think. ( the real edges of the commit graph creating when you commit (edge between the old and new commit) or you mergeing two commits (edge between the new commit, and the two 'parent' commit))
See the result:
git log --graph --decorate --pretty=oneline --abbrev-commit --all
A-B-C-D-E (master)
\-D (develop)
I hope could help you.