2009-06-06 13 views
22

github.comに公開倉庫があり、ブランチはmastertestの2つです。"git push"をgithubにするとエラーが発生する

私はローカルに新しいディレクトリを作成しました:

[ ] git clone [email protected]:{username}/{projectname}.git 

は、その後、私は

[ ] git branch my_test 

my_testという名前の新しいブランチを作成し、それに切り替えます。

[ ] git checkout my_test 

は、その後、私は

[ ] git merge origin/test 

と私の公開リポジトリの私のtestブランチからそれをマージし、それが早送りになりました。

私はいくつか変更を加えてコミットしました。 は、それから私は

[ ] git push [email protected]:{username}/{projectname}.git test 

とgithubので公衆testブランチにローカルmy_testブランチをプッシュしようとしたが、私はこのエラーを得た:

error: src refspec test does not match any. 
fatal: The remote end hung up unexpectedly 
error: failed to push some refs to '[email protected]:{username}/{projectname}.git 

は私が間違って何をやっているの?

+0

gitでコミットをプッシュすると、[src refspec masterと一致しない可能性があります](http://stackoverflow.com/questions/4181861/src-refspec-master-does-not -match-git-commit-in-git) –

+0

[新しいリポジトリに原点マスターのエラーをプッシュする]の複製があります(http://stackoverflow.com/q/827351/456814)。 –

答えて

30

おそらく試してみてください。

git push [email protected]:{username}/{projectname}.git HEAD:test 

そのコマンドライン上の最後のパラメータのフォーマットは、コロンと、宛先REF続い源REFあるrefspecです。また、HEADの代わりにローカルブランチ名(my_test)を使用して、正しいブランチを押していることを確認することもできます。

git pushのドキュメントには、このパラメータの詳細があります。

+0

それは働いた。ありがとうございました。 – ebsbk

+0

それは魅力のように働いた:) –

+0

私はそれを得ることはありません。 HEADを使用するときにはなぜ機能するのですか?ローカルブランチの名前を使用するときには機能しません。 –

17

また、プッシュするたびにURL全体を入力する必要はありません。クローンを実行すると、gitはそのURLを 'origin'として保存しました。そのため、 'merge origin/test'のようなものを実行できます。つまり、 'origin'サーバ上の 'test'ブランチを意味します。だから、その場合には、サーバーにプッシュする最も簡単な方法は次のようになります。

あなたの「起源」サーバー上の「試験」の枝にあなたの地元の「my_test」ブランチをプッシュします
git push origin my_test:test 

。あなたのローカルブランチサーバー上のブランチと同じ名前のあった場合は、コロンがneccesaryではありません、あなたは簡単に行うことができます。

git push origin test 
1

私はあなたが分岐トラッキングを設定する必要があります、ここだと思います。あなたが最初に何を犯したことなく、新しいリポジトリにプッシュしようとすると、このエラーはまたアップします

git push -u origin my_test 
git pull origin my_test 
1

をテストするには

git branch --track my_test origin/my_test 

の追跡を有効にするには、次を実行してください。試してください:

git add -A 
git commit -am 'Initial commit' 

もう一度試してみてください。

0

ローカルリポジトリが、プッシュしようとしているリモートリポジトリと同じ名前であることを確認する必要があります。

まず、git branch -m "test"を使用して "my_test"が "test"になるようにリポジトリを変更します。 2番目のgit push originテスト

関連する問題