2009-06-03 9 views
3

私はgit pushを使って問題を起こしました。ブランチをリモートリポジトリにプッシュしようとしましたが、エラーが発生しました。いくつかの検索の後 なぜgit pushはlocalref引数を必要とするのでしょうか?

は、私はGitのIRCチャンネルにそれを求めてきました、と誰かがプッシュの構文は今まで、私はうまく働いていたGitのプッシュを使用し、最大

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

だと言いました。しかし、この場合、失敗しました。

は、私は、リモートサーバーにマスター以外のいくつかの枝をプッシュしようとした、と私は次のエラーました:localrefを指定することで

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

を、それが突然worken。

私の質問は、なぜ今はlocalrefを指定する必要がありましたか?

答えて

4

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

"master"ブランチしかなく、リモートレポも "master"ブランチを持っていれば、単に "git push remote"でローカルマスターをリモートマスターにプッシュします。

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

あなたはREFの名前は、リモート側でどうあるべきかのGitを伝える必要があり、それは、それを作成します。

 
git push remote xi-temp-dennis:foo 

この

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

 
git push remote xi-temp-dennis:xi-temp-dennis 
+0

ええ、私はちょうどそれを実現するようになりました。私はgit pushリモートxi-temp-dennisを実行したとき、私のローカルリポジトリでxi-temp-dennisというブランチを探しますが、リモートリポジトリのブランチを指定すると考えました。 – Ikke

+0

'git push -u 'を使って、 'git pull'のようなコマンドで次回使用できるトラッキング情報も設定することに注意してください。 – Ikke

関連する問題