0

git を使用してレポを複製しました。別のユーザーが新しいブランチを作成し、それを foo と呼びます (master と foo の 2 つのブランチがあります)。リモート foo を追跡するために別のブランチ foo を作成しました。そこで、次のコマンドを実行しました: git branch --set-upstream foo origin/foo. しかし、次のようなエラー メッセージが表示されますfatal: Not a valid object name: 'origin/foo'。git remote origin show を実行すると、次のメッセージが表示されます。

* remote origin
  Fetch URL: ssh://***
  Push  URL: ssh://***
  HEAD branch: foo
  Remote branches:
    master   tracked
    foo new (next fetch will store in remotes/origin)
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (local out of date)
4

1 に答える 1

2

最初にローカル リポジトリにブランチをフェッチまたはプルする必要があります。

git fetch origin
# OR
git pull origin

その後、チェックアウトできますfoo

git checkout foo

そして、あなたが書いた上記のコマンドを使用して、origin/foo を別のローカル ブランチ名で追跡することができます (同じ名前を使用しているので、呼び出しを入れて、チェックアウトするだけです)。

Git リモートは、変更をプル/プッシュできる場所にのみあります。しかし実際には、git が行うことはすべてローカル ドライブ上にあるため、最初にロケールにフェッチしない限り、リモート ブランチとやり取りすることはできません。ローカルで保持しているコミット IDorigin/fooのラベルにすぎません。sha-1を使用する場合origin/foo、リモート ステータスではなく、ローカル ラベルを参照します (リモート ブランチを参照している間は ssh 接続は行われません)。

于 2012-10-08T19:19:57.053 に答える