tohokuaikiのチラシの裏

技術的ネタとか。

リモートのbareリポジトリに手元のブランチを押し込んで、それをまた別のGitで引っ張る方法

サーバAで開発してるのだけどブランチ切りたくなって、サーバBでもそのブランチを扱いたい場合。

bareリポジトリにサーバAの新ブランチを送り込んでやる

git push origin(リモートリポジトリ名) localbranch(ローカルブランチ名):remoteb(リモートブランチ名)

サーバBにbareリポジトリから取り込む

ただし、登録済みであるとする。

そののちにチェックアウト

$ git checkout -b ローカルブランチ名 -t origin2/リモートブランチ名
fatal: git checkout: updating paths is incompatible with switching branches.
Did you intend to checkout 'origin/demo-wp' which can not be resolved as commit?

すると怒られた。

リモートのブランチ状況を更新しないとダメですよね・・・。

git remote show origin2

とすると、

* remote origin
Fetch URL: ssh://xxx@example.com/var/git/foo
Push URL: ssh://xxx@example.com/var/git/foo
HEAD branch: master
Remote branches:
demo-wp new (next fetch will store in remotes/origin)
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)

と言われたので、同期してやる

git fetch origin2

これ、2か月前に同じことしてた。
http://d.hatena.ne.jp/tohokuaiki/20120420/1334909265