Hi, On Wed, 11 Jul 2007, martin f krafft wrote: > also sprach robin: > > And the simplest way to create an new indpendent branch: > > > echo ref: refs/heads/newbranch >.git/HEAD > > Then prepare the content and commit like you used to do. > > I am a little uneasy about touching files in .git with non-git > tools, but everyone seems to be doing it, so I guess it's okay, and > it make git a lot more powerful too. You can achieve the same with git symbolic-ref HEAD refs/heads/newbranch There. No editing in .git/. > piper:~> echo ref: refs/heads/newbranch >| .git/HEAD > piper:~> git status > # On branch newbranch > # > # Initial commit > # > # Changes to be committed: > # (use "git rm --cached <file>..." to unstage) > # > # new file: date > # However, this is much easier without Git commands: rm .git/index Of course, you can remove all files one by one, but that is certainly not easier: git ls-files --cached -z | xargs -0 git rm --cached But then, you really can learn from both examples: .git/index contains references to the objects which are staged (in Git speak: "in the index"). Git plays nicely when that file is missing, and assumes the index to be empty. With "git ls-files --cached", you can list the files which are in the index, and with "git rm --cached", you remove the file _only_ from the index, but keep it in the working tree (if it is there). The options "-z" and "-0" are only to separate the names by NUL instead of newlines, to allow funny file names, too. If a few more people ask for that feature, we could enhance the semantics of "git branch" and "git checkout" to interpret the empty string similar to "git push <repo> :<name>". Ciao, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html