時計を壊せ

駆け出してからそこそこ経ったWebプログラマーの雑記

gitで新しくブランチを切るベストプラクティス

普段から普通にやっている方法です。

git fetch
git checkout -b $BRANCH_NAME origin/master
git push -u origin $BRANCH_NAME

git fetchでoriginを最新にして、origin/masterからブランチを切ります。
これで、プロジェクトの最新の状態からbranchを切る事が出来ます。
現在どのbranchに居るかを気にせずとも、branchを切る元を間違える事がないので安心です。
(例えばうっかり関係ないtopic branchから切ってしまう。といったことを気にしなくて良くなります。)

また、git push -u origin $BRANCH_NAMEすることにより、
リモートブランチがupstreamとして紐付く為、いちいちgit pull origin $BRANCH_NAMEとかしなくて良くなり、うっかり違うブランチをpullするというような事故を防げます。

というやりかたがベストかなーと思っていますがより良い方法があれば知りたいです。
追記: git 1.9未満ではこの上でgit config push.default upstreamにしておくと安全です。git config push.default currentだと最初のpushが若干楽になりますが、upstreamのがカタイです。お好きな方で。*1
なお、git 2.0からはgit config push.default simpleがデフォルトになったので、git 2.0使おうぜもアリだと思います。

*1:もちろんですが、globalに適用したいときは--globalオプションを付けましょう。

.gitconfigにinclude書くと捗る

2012-08-20一部訂正

githubにdotfile上げてる人は結構多いですが、
github.tokenなど、一部の設定は公開されると困りますね。


そんなときはincludeディレクティブを使うとローカル用の設定を別ファイルに出来るので捗ります。

[include]
    path = .gitconfig.local
[core]
    editor = emacs
    pager = lv
    whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
    excludesfile = .gitignore

こんな感じでやると.gitconfig.localを読み込んでくれるので、
github.tokenなどは.gitconfig.localに書いておくといい感じになって捗ります。

参考:
http://stackoverflow.com/questions/1557183/is-it-possible-to-include-a-file-in-your-gitconfig
https://github.com/git/git/blob/master/Documentation/RelNotes/1.7.10.txt

このあたりによると1.7.10以降でしか使えないよとかありますが(実際に1.7.10で追加されてるようですが)、
僕の環境は1.7.5.1ですがなぜか使えてるので、もしかしたら使えるバージョンもあるのかもしれません*1

なんでつかえるのかふしぎ!!!!!


2012-08-20訂正: なんかシステムに2つgitが入っていてバージョンを見てたgitは使ってなかったようです!1.7.10未満でも動くというのはやはり幻想でした!

*1:頑張って1.7.10以降を入れて下さい