ソースコードコミットしたらBitbucketに自動プッシュさせたい。
コミットログとかrebaseとかにあまりこだわらない人向け。
確認箇所
-
push.default
は設定されているか、Gitのバージョンはいくつか - 対象となる作業ブランチは目的のリモートブランチにupstream setされているか
-
git ls-remote
はできるか -
.git/hooks/post-commit
は設定されているか
push.defaultは設定されているか、Gitのバージョンはいくつか
version 1.7.11以降ならpush.default simple
に。
そうでなければpush.default upstream
にしておく。
コマンド
git config --global push.default simple
git config --global push.default upstream
別に--global
でなくてもよい。
対象となる作業ブランチは目的のリモートブランチにupstream setされているか
ローカルで先行してブランチ作って開発していた場合upstreamが設定されていない。
これに気づかず少し時間を食った。
ローカルブランチとリモートブランチを関連付ける
ローカルからみたUpstream先を「追跡ブランチ」と言うらしい。知らなかった…。
追跡ブランチ設定をしたいローカルにチェックアウトし、その後のgit branch -u
で、追跡したい先のブランチ名をリモートリポジトリの名前も含めて引数に指定する。
git checkout local-branch
git branch -u origin/remote-branch
普通はUpstreamが設定されてないだけでlocal-branch
とremote-branch
は同じ名前のブランチだと思う。
.git/hooks/post-commitは設定されているか
post-commit
最初はファイルがないと思うのでcpして作る。
cd .git/hooks/
cp post-commit.sample post-commit
vim post-commit
処理したい内容を書けばいい。リモートにPushしたいだけなら、
git --git-dir=.git push origin
でいい。set upstreamしておけば大丈夫だけど、意図しないリモートサーバに送るというのはすごく困るので、いちおうorigin
指定まではしておく。
commitしてもpushされないときは
だいたいfatal:
でno upstream
と出てるのでgit branch -u
を行う。
Bitbucketにパス無しでPushしたいのにできない
むしろコレでかなり時間食った。
結局ssh-keygen
とデプロイ鍵登録によるssh://
プロトコルは諦め、https://
を使ってremote url内にusername:password
を挿入することにした。
パスワード平文で書いてあるのでかなりソワソワする。
git remote set-url origin https://username:password@bitbucket.org/teamname/projectname.git
誰かBitbucketに鍵認証でDeployするにはどうすればいいか教えてください…。