Created
February 13, 2012 09:15
-
-
Save bleis-tift/1815369 to your computer and use it in GitHub Desktop.
空コミットを最初のコミットとして作るコマンド(git initの代わり)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
msg=${1:-"first commit"} | |
git init | |
tree_hash=$(git write-tree) | |
commit_hash=$(echo -n "$msg" | git commit-tree $tree_hash) | |
echo $commit_hash > .git/refs/heads/master |
git commit --allow-empty
でよい気がします
git startやったあとに、もう一回git startやった場合に--amend付けるのが面倒なのと、あとで(と言ってもgit start直後だけだけど)コミットの情報を弄りやすいようにするためにこうなりました。
ユースケースとしては、PC1とPC2でuser.nameとかuser.emailが違う場合に、PC1でgit startしたけど考えてみたらPC2のユーザ名でやるべきだった、となった時に、
git config user.name pc2
とかやってもう一回git startするとユーザ名がpc2で最初のコミットがされます。
PC1は会社のPC、PC2は自宅のPCとかそんな感じです。
なるほど、そういうユースケースを想定されているんですね。
ただまぁ--amend使わずに、ブランチを消してしまって--allow-emptyでもいい気はします
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
単純にgit initしただけだと、最初のコミットの差分をgitkなどで見ることができない。
これは、最初のコミットには比較対象がないためなので、最初のコミットとして空のコミットを行えばいい。
もちろん、空の.gitignoreファイルを作成するなどしてもいいのだが、完全な空のコミットというわけではなくなる。
ただし、git commitでは空のコミットを行うことができないので、低レベルコマンドであるgit write-treeとgit commit-treeを使って空のコミットを行っている。
git initの代わりにgit startとすれば、「first commit」という空のコミットが作られる。
git start messageとすれば、コミットメッセージの内容を「message」にして空のコミットを作ることができる。