3

今日、git push で問題が発生しました。ブランチをリモート リポジトリにプッシュしようとしましたが、エラーが発生しました。

いくつか検索した後、git irc チャンネルで質問したところ、プッシュの構文は

git push <remote> <localref>:<remoteref>

今までは、正常に機能する git push を使用していました。しかし、この場合は失敗しました。

マスター以外のブランチをリモート サーバーにプッシュしようとしたところ、次のエラーが発生しました。

error: src refspec xi-temp-dennis does not match any.
error: failed to push some refs to 'remote.server'

localref を指定することで、いきなり動くようになりました。

私の質問は、今回 localref を指定する必要があったのはなぜですか?

4

1 に答える 1

4

プッシュする参照を指定せずに単純な「git push remote」を実行すると、Git はすべての「一致するブランチ」をプッシュします。「一致するブランチ」とは、ローカル リポジトリ内のブランチの名前がリモート リポジトリ内のブランチと同じであるブランチです。リモート リポジトリのブランチは、ローカル リポジトリの一致するブランチを使用して更新されます。

そのため、「マスター」ブランチしかなく、リモート リポジトリにも「マスター」ブランチがある場合、単純な「git push remote」だけでローカル マスターがリモート マスターにプッシュされます。

リモートリポジトリに存在してはならない新しいブランチ「xi-temp-dennis」を作成しました。したがって、Git は、一致するブランチをプッシュするデフォルトの動作を正常に実行できません (したがって、「一致しない」エラーが発生します)。

Git に、リモート側で参照の名前を指定する必要があります。これにより、参照が作成されます。

git push リモート xi-temp-dennis:foo

これにより、更新される「foo」という名前のリモート ブランチが作成されます。ただし、その名前はローカル ブランチの名前と一致しないため、更新をプッシュするには、常に同じコマンド (xi-temp-dennis:foo を使用) を入力する必要があります。「git push remote」と入力するだけで更新が機能するようにしたい場合は、リモート ブランチにローカル ブランチと同じ名前を付ける必要があります。

git push リモート xi-temp-dennis:xi-temp-dennis
于 2009-06-03T20:05:01.863 に答える