2012-04-03 2 views
7

最初に:質問タイトルの謝罪、私は実際に問題が何であるか分からないので、私はそれについて質問する方法を知らない。Gitは起源/マスタへのローカル参照を保持したくないようです

上流のマスター(私のリモートが設定されている方法に基づいて、origin/masterである必要があります)でマスターを比較したいです。

しかし、元はの後にはに置かれました。私はそれをしばらくローカルで作業していました。つまり、私は地元のレポを持って、それをgitoliteの設定に入れて、それを起源と呼ぶように私の地方のgitに言いました。

これらは症状です:

$ git diff master orgin/master 
fatal: ambiguous argument 'orgin/master': unknown revision or path not in the working tree. 

$ git diff master origin/master -- 
fatal: bad revision 'origin/master' 

フム。

$ git remote -v 
origin [email protected]:example (fetch) 
origin [email protected]:example (push) 

大丈夫です。

$ git branch -a 
... # nothing from origin 

hm。

$ git fetch -a origin 
From example.com:example 
* branch   HEAD  -> FETCH_HEAD 

これは正しいのかどうかわかりません。プロダクトに見えますが、まだgit diff master origin/masterが失敗します:

$ git branch --track omaster origin/master 
fatal: Not a valid object name: 'origin/master'. 

$ ls .git/refs/remotes 
gitps ps 

これは間違っています。これは、数か月間存在しなかった古いリモコンです。また、彼らは空です。 .git/remotesはまったく存在しませんが、私はそれがすべきであるかどうかはわかりません。

答えて

10

gitにどのブランチをフェッチするかを指示する必要があるかもしれません。このレポのファイル.git/configには、[remote "origin"]セクションの下に、fetch = ...のような行があります。これはgitに何をフェッチするのか、そしてローカルに置く場所を指示します。ここではかなり標準の例です:

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = ssh://... 

あなたがfetch = ...行が表示されない場合は、安全基準は、「ローカルですべての分岐を追跡し、原点/ それらを呼び出すされ、例に一致するようにそれを追加することができます"オプションはgit cloneで設定されます。

詳細については、git pro bookを参照してください。

+1

ありがとう、ありがとう!うん、フェッチラインが完全に欠けていた。 – quodlibetor

+0

ありがとうございます。私のために、私のフェッチラインは存在しましたが、何らかの理由で特定のリリースブランチからフェッチしていました。上記の行を更新し、 'git remote update'を実行してから' git reset --hard origin/branchname'を実行すると、すべて正常に動作します。 – Phil

11

git remote updateを試しましたか?これにより、すべてのリモコンが更新され、必要に応じてリモート追跡ブランチが作成されます。

+0

残念ながら 'git fetch -a origin'とまったく同じ結果を試しました。 – quodlibetor

0

私は今も同様の問題がありました。私は、ファイルを削除し、

git init && git remote add origin "gitrepo" 

ないこれはなぜ起こったか、あまりにも確認してくださいgitリポジトリを初期化し

$ file .git 
    .git: ASCII text 

実際にファイルとしてその私の地元の.gitディレクトリを発見しました。うまくいけば、これは誰かを助けることができます..

関連する問題