Eclipse で作業している簡単なサービスのプログラムを、別のPCからブランチを切ってリモートリポジトリにあげていたのだけれど、サブPC (Linuxノート) から作業しようと思って、リモートのブランチからローカルにチェックアウトしようとしてみたところ、何度やっても EGit のリモートリポジトリにブランチが出てこない。
はて、困ったもんだ。。
git fetch コマンドは沈黙している
いままで Eclipse の EGit 頼みでやってきていて、Git コマンドを真面目に勉強してこなかったツケがまわってきたな・・
と思いつつ、ブラウザでググりながらいろいろ試行錯誤。
git branch -a
* master
remotes/origin/master
本当は、ここに remotes/origin/develop
というのが出てきてほしいのです。
ひとまず、こんなときは次のようにするといいらしい。
git fetch origin
・・ところが何も起こらない。
git fetch origin
git branch -a
* master
remotes/origin/master
git branch -r
origin/master
git branch -r
origin/master
何度やっても同じだよねぇ。
.git/config を確認する
そこで、更に奥深くまで調べていくと、どうやら .git/config
の設定が誤っているということなので、内容を確認してみた。
[core]
repositoryformatversion = 0
filemode = true
logallrefupdates = true
[remote "origin"]
url = ssh://hoge@zatsusrv.mydomain.jp:64022/~/git/bbspl.git
fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
remote = origin
merge = refs/heads/master
この、[remote "origin"]
内の、fetch = +refs/heads/master:refs/remotes/origin/master
がおかしいらしいので、次のように書き換えました。
[core]
repositoryformatversion = 0
filemode = true
logallrefupdates = true
[remote "origin"]
url = ssh://hoge@zatsusrv.mydomain.jp:64022/~/git/bbspl.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
そして、次のように実行。
$ git branch -r
origin/master
$ git fetch origin
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 13 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (13/13), done.
From ssh://hoge@zatsusrv.mydomain.jp:64022/~/git/bbspl.git
* [new branch] develop -> origin/develop
$ git branch -r
origin/develop
origin/master
$ git branch -a
develop
* master
remotes/origin/develop
remotes/origin/master
めでたし!
これでようやく続きの作業ができる。
まとめ
人間、歳とっても「ひとつ賢くなる」ことはできるのである。
0件のコメント