Git, 空のブランチを作成する

動機

vimプラグインをgitで管理したい

vimfiles.git/master
    plugin/
        plugin-a.vim
        plugin-b.vim
    doc/
       plugin-a.txt 

プラグインごとにブランチで管理したら履歴が追いやすくていいのではないかと考えた。

vimfiles.git/plugin-a
    plugin/
        plugin-a.vim
    doc/
        plugin-a.txt

問題: plugin-aブランチをどう作るか。
plugin-aはgit上で開発されているわけではないのでどこかからfetchしてくるわけにはいかない。
plugin-aのリポジトリを作成してからfetchすることは可能だが、いちいちリポジトリ作らず現在のリポジトリ内で操作を完結させたい!

やりたいこと

既存リポジトリ上で、親を持たないコミットを作成したい。
つまり、

==== before ====

a --- b --- c <- master


==== after ====

a --- b --- c <- master

            e <- plugin-a

ということがしたい。

下調べ

$ mkdir empty-git-repo

$ cd empty-git-repo

$ git init

$ cat .git/HEAD
ref: refs/heads/master

$ ls .git/refs/heads/

$ # ↑存在しないブランチを指してる……? 

$ git log
fatal: bad default revision 'HEAD'

$ # ↑特異な状態のようだ

方法

目的のリポジトリにて

$ echo 'ref: refs/heads/target-branch-name' > .git/HEAD # 実際にブランチを作成はしない。HEADの参照のみ更新
$ rm -rf * # ……
$ cp; mv; edit; edit; # ファイル追加
$ git add . && git commit

これで既存リポジトリにおいて親を持たないコミットを作成できる。やりかたが強引だなあ……

別解として、git resetで最初のコミットまで戻してからファイル構成つくりなおしてamendでもよいかも。それも微妙……