少しクセのあるgitの使い方。
丸4年このやり方をして一度もローカルブランチを切る必要に迫られたことはない。
シンプルな手順なので共感するひとが増えたら嬉しい。
前提
- github等のリモートリポジトリを使いながら開発する(スタンドアローンでgitを使う人には向かない)
ローカルブランチを切っていたときに感じていたこと
- リモートとローカルに同名の別の内容のリビジョンのブランチができてしまうのでどこが正なのか記憶しなくてはいけない(複数サーバで開発した場合特に)
- git pullで暗黙的にブランチを書き換えるより明示的にmerge、rebaseしたい
- 作業が終わったらバックアップの意味を含めリモートにpushすべきなのでローカルブランチとして状態を持つことに意味がない
手順
新しく開発を始める
checkoutするときはリモートリポジトリを指定し、常にno branchで作業する。
git fetch --all
git checkout origin/master
開発が一区切り着いたら
言語や環境に不慣れな場合は特に細くコミットをしながら進めるのでゴミコミットがたくさんできている。
意味のないコミットはpushする前にまとめる。
必要性を感じなければしなくていいと思う。
git reset --soft origin/master
git commit -m 'message'
リモートリポジトリにブランチを作る
pushと同時にリモートブランチを作成する。
既存のブランチに継ぎ足す場合も同じコマンドでOK。
git push origin HEAD:refs/heads/new-branch-name
注意点
- 作業が終わったら必ずリモートにpushすること。万一push前なのに別ブランチをチェックアウトしてしまった場合は
.git/logs/HEAD
から探す。