7

まず、質問のタイトルについてお詫びします。実際に問題が何であるかわからないので、質問する方法がわかりません。

マスターをアップストリームマスターと比較したい(リモートの設定方法に基づいて、オリジン/マスターである必要があります)。

しかし、私がしばらくローカルで作業したに起源がそこに置かれたので、それは名前だけで「起源」です。つまり、ローカルリポジトリがあり、それをgitoliteセットアップに配置してから、ローカルgitにそれをoriginと呼ぶように指示しました。

これらは症状です:

$ 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  git@example.com:example (fetch)
origin  git@example.com:example (push)

さて、それは正しいように見えます。

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

うーん。

$ 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、存在するかどうかはわかりませんが、まったく存在しません。

4

3 に答える 3

11

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

于 2012-04-03T21:22:14.050 に答える
10

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

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

行が表示されない場合はfetch = ...、例に一致するように安全に追加できます。これは、によって設定された標準の「すべてのブランチを追跡し、それらをorigin/ブランチと呼ぶ」オプションgit cloneです。

何が起こっているのかについての良い説明については、 gitproの本を参照してください。

于 2012-04-03T21:34:04.133 に答える
0

私はちょうど今同様の問題を抱えていました。ローカルの.gitディレクトリが実際にはファイルであることを発見しました

$ file .git
     .git: ASCII text

ファイルを削除し、gitリポジトリを初期化しました

git init && git remote add origin "gitrepo"

なぜこれが起こったのかよくわかりません。うまくいけば、これは誰かを助けることができます。

于 2017-06-19T14:06:13.230 に答える