Gitでコミットをプッシュするときにメッセージ「src refspec master is not match any」が表示される


2691

私は私のリポジトリをクローンします:

git clone ssh://xxxxx/xx.git 

しかし、私はいくつかのファイルと変更した後addcommit、それらを、私は、サーバーにそれらをプッシュします:

git add xxx.php
git commit -m "TEST"
git push origin master

しかし、私が返すエラーは:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'

26
@マルコそれは重複ではありません。これは、ローカルブランチをリモートブランチにプッシュすることに関する非常に具体的な問題です。これは、レポを初期化してそれを押し上げることについてです。それらは同じエラーを生成しますが、そのエラーを生成する理由と修正は完全に異なります。また、sinoohe、あなたは答えを受け入れる必要があります。たぶん最初の質問だと思います。質問に答えて、350人以上を助けてきました。
tandrewnichols 2013

git configコマンドをセットアップして、gitをマシンにグローバルにインストールして構成しましたか?
IgorGanapolsky 2013年

1
この投稿が誰かに役立つことを願ってい ます-samranga.blogspot.com/2015/07/…質問のエラーは、すでにローカルに存在するプロジェクトからGit BitBucketリポジトリを作成しようとしてもポップされることがあります
Samitha Chathuranga

間違ったブランチ名をプッシュしようとすると、このエラーを受け取りました。git status適切なものを取得するためにを使用して解決しました。
トムハワード

5
さらに別の単純なタスクがGitによって困難になりました。Git開発者は、SDLCループのフィードバックとしてスタックオーバーフローを使用する必要があります。850,000人以上の人が、Gitのワークフローに重大な問題があることを示しているはずです。UXの専門家を雇う必要があるのは、それを自分でGitすることは明らかに難しいためです。
JWW

回答:


4140

たぶんあなたはコミットする必要があるだけです。私がそうしたときに私はこれに遭遇しました:

mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .

おっとっと!コミットしないでください!

git push -u origin master
error: src refspec master does not match any.

私がしなければならなかったすべては:

git commit -m "initial commit"
git push origin master

成功!


130
この手順を盲目的に実行するだけでなく、@ Viの説明を確認してから、プッシュコマンドを修正して参照を修正してください。
Kumar

49
このエラーの最も可能性の高い原因は、すべてのファイルが追跡されておらず、追加されていないことです。git add --allすべてのファイルを追加したい場合、または選択的にファイルを追加できます。その後git commit -m "Initial comment"git push origin master。これはきっとうまくいきます。
Bhanu Pratap Singh

6
良いが実際にはこの実際の質問に対する答えではない別の問題を修正します。
マイケルデュラント2015年

7
git commit -m 'initial commit'二重引用符で囲む必要があります。' git commit -m "initial commit"、少なくともWindowsでは。
dance2die 2016年

5
別の考えられる理由:実際にはマスター
CarlosAS

843
  1. git show-refあなたが持っている参照を見てみてください。ありrefs/heads/masterますか?

  2. git push origin HEAD:masterよりローカルな参照に依存しないソリューションとして試すことができます。これは、ローカル参照HEADをリモート参照にプッシュすることを明示的に示していますmastergit-push refspecのドキュメントを参照)。


6
私のマスターブランチはコミットの上にありませんでした!ので、私はそれがすべてbranchsの終わりにあったとブランチを作成したと私は、サーバーにそれらをプッシュ:
sinoohe

10
git checkout -b testbranch; git push origin testbranch:master
sinoohe

101
git show-ref私の枝を見せた。git push origin HEAD:<branch>私のために働いた。
Glen Solsberry、2011年

5
あなたは私にViを保存しました。ありがとうございgit push origin HEAD:master。しかし、なぜのようなものがgit push --force origin master機能しないのですか?
shkschneider 2012

4
@ gms8994-そのとおりです。誰かがマスターにプッシュするのではなく、最初にブランチを作成すると、同じunfriendlyエラーが表示されます。使用git push origin <branch>の代わりに、masterあなたがしようとした場合のgit checkout -b <branch>初期の後に任意のFIRSTプッシュする前にgit remote add origin <url>
asyncwait

225

ローカルコンピューター上のすべてのファイルを削除した後も同様のエラーが発生し、リポジトリ内のすべてのファイルをクリーンアップする必要があります。

私のエラーメッセージは次のようなものでした:

error: src refspec master does not match any.
error: failed to push some refs to 'git@github ... .git'

そして、それは次のコマンドを実行することによって解決されました:

touch README
git add README

git add (all other files)
git commit -m 'reinitialized files'
git push origin master --force  # <- caution, --force can delete others work.

10
他の答えは私が抱えていた問題を解決しませんでしたが(たとえば、私はすでにコミットしていて、まだこのエラーがありました)、git push origin BRANCH --forceうまくいきました。ありがとうございました!
Lemmings19、2013年

この以前の回答を参照してください。gitは空のディレクトリを追跡しないため、ファイルを追加する必要があると思います。

3
push --forceは、同僚のハードワークを完全に吹き飛ばすこともできます。それによる警告を追加しました。
Michael Durrant 2015年

3
これは私の問題を解決しました。git addでできたと思います。最初にgitをプッシュしても認識されませんが、それが原因で問題が発生した可能性があります。git addコマンドで問題が解決しました。また、その後--forceなしでプッシュすることができました。ありがとう
Aryo

203
  1. 私の変更はすでにコミットされています
  2. 強制プッシュでも同じエラーが発生しました。

だから私はViの解決策を試しました:

git push origin HEAD:<remoteBranch> 

これでうまくいきました。


19
ブランチ名のスペルを間違えたことが原因であることが、ようやくわかりました。私は正常とBという名前のブランチに原点に分岐Aを押したgit push origin HEAD:Bが、私はしてプッシュするとき、私はまだ同じエラーを毎回持っgit push origin分岐A.上
李H.

1
@YiHuang、ありがとうございます。以前にブランチ名を確認しましたが、コメントがあったため再度確認しました-同じ問題があり、ミスプレレットしました。
Lakesare 14

1
@ YiH.iは私のブランチ名が正しいことを確信していましたが、あなたのコメントと私の悪いことを読んだ後、それを再確認しました-同じ問題があります。
ヌルポインター

125
git push -u origin master
error: src refspec master does not match any.

そのためには、次のようにコミットメッセージを入力して、コードをプッシュする必要があります。

git commit -m "initial commit"

git push origin master

マスターにプッシュしました。


動作していることを確認しました。-uオプションを無視してから、試してください
VIKAS KOHLI '13年

ここの問題はOPの問題とは完全に異なるようです...しかし、私を含む多くの人がこの問題を抱えていたようです。
ZX9

110

私にとっては、公開鍵がサーバー(〜/ .ssh / authorized_keysに追加)とGitHub / Bitbucket(GitHubまたはBitbucketのSSH鍵に追加)で適切に構成されていることを確認する必要がありました-一致する必要があります。

次に:

git add --all :/

git commit -am 'message'

git push -u origin master

それは結局私のために働いた。


88

Gitがディレクトリのみを追加した後、これが新しいリポジトリで発生したことがわかりました。

ファイル(READMEなど)を追加するとすぐに、Gitプッシュはうまく機能しました。


6
gitが実際にディレクトリを追跡するのではなく、ファイルのみを追跡するため、これはおそらく機能します。したがって、ディレクトリが空の場合、gitは実際にはそれを追加しません。

1
OPはファイル(xx.php)を追加したため、他の場合ではこれが問題になる可能性があり、ファイルを追加するとその問題の解決策であるにもかかわらず、これは問題ではありませんでした。
マイケルデュラント2015年

1
イライラする問題に対するそのような単純な解決策。私はリポジトリの作成とクローンをテストし、ファイルではなく空のディレクトリを作成しました。
James Wierzba、2015

1
8年後、これは私にいくつかの頭痛を救いました!
rvictordelta

私の場合、1-> git init 2 ---> git add origin .... etc 3 ---> git git push -u origin master ===>その後、上記のエラーが発生しました。===>その後、次の2つのコマンドを実行すると、表示されなくなります。---> git add * ---> git commit -m "Some message" ---> git git push -u origin master ===>私の場合、うまくいきました。
Rao

67

欠落しているかスキップしているgit add .git commit、このエラーが発生する可能性があります:

git push -u origin master
Username for 'https://github.com': yourusername
Password for 'https://yourusername@github.com': 
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/yourusername/foobar.git'

これを修正するには、再初期化して適切なシーケンスに従います。

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master

それは正しいです。ビジネスエンドはより具体的git remote add __REMOTE_NAME__ __URL_OR_SSH__で、リモート名の上に「origin」があります
aug2uag

1
彼らは彼らの質問に追加してコミットしたので、これは他の人を助けるものの問題ではありませんでした。
Michael Durrant、2015年

ただし、-uここで使用したオプションにより、この回答は機能しました。
マイケルデュラント2015年

63

これを修正するには、再初期化して適切なコードシーケンスに従います。

git init
git add .
git commit -m 'message'
git push -u origin master

55

最初に追加したことを確認してから、コミット/プッシュします。

お気に入り:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

44

私は同じ問題に直面し、私は使用しました--allow-empty

$ git commit -m "initial commit" --allow-empty
...
$ git push
...

補足

この問題の主な理由の1つは、BitBucketなどの一部のGitサーバーでmasterは、新しいリポジトリが複製されたときにブランチが初期化されていないためです。


43

これは、特定のブランチにいて、次のようにまだ存在しない別のブランチをプッシュしようとした場合にも発生します。

$ git branch
* version-x  # you are in this branch
  version-y

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'

3
笑。オリジンマスターにプッシュしようとしていましたが、そのブランチは存在しませんでした。それは起源安定と呼ばれていました。
ペンナー2013年

1
-uここに役立っている可能性があります。
Michael Durrant 2015年

1
上記の場合、もちろん問題はローカルブランチmasterがないため、プッシュできません。このように、あるいはmasterブランチを作成し、それをプッシュする-あなたはどちらか既存のブランチをプッシュするgit checkout -b master; git push -u origin master;
tanius

4
ブランチ名のスペルを間違えたとき、これを取得しました。
SebastianÄrleryd17年

2
私の地方支部は「s h eduler」と綴られていて、私はそうしていましたgit push origin scheduler。ハ!1文字オフにすると、プログラミングであなたを殺します。lol
protoEvangelion 2017

35

私にとって、追跡されていないファイルを移動するために働いた:

git add --all

次に、同様の手順を実行しました

 git commit -m "First commit"

そして、

git remote add origin git@github.....

最後になりましたが、少なくとも:

git push -u origin master

これを行うと、ユーザー名とパスワードを要求するWindowsセキュリティがポップアップします。


1
「git add --all」と2つのダッシュ
Abdallah Abdillah

29

私の場合、.gitignoreファイルを含めるのを忘れていました。必要なすべての手順は次のとおりです。

  1. リモートで空のGitリポジトリを作成します。
  2. ローカルでプロジェクトの.gitignoreファイルを作成します。GitHubはここ例のリストを提供します
  3. ターミナルを起動し、プロジェクトで次のコマンドを実行します。

    git remote add origin YOUR/ORIGIN.git
    
    git add .
    
    git commit -m "initial commit or whatever message for first commit"
    
    git push -u origin master
    

これは.gitignoreに関連する問題のエラーですか?それが関連している場合(私はこれを強く疑います)、回答で説明する必要があります。ありがとう
pedram bashiri

26

最初のコミットを追加するだけです。次の手順を実行します:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

これでうまくいきました。


24

私の問題は、「master」ブランチがまだローカルで作成されていないことでした。

クイック

git checkout -b "master"

マスターブランチを作成しました。

git push -u origin master

作業をGitリポジトリにプッシュしました。


22

コマンド「git add」を忘れた可能性があります。「git init」コマンドの後。


プラスgit commitコースの...
ビル

20

以下のようにGitHubの指示にも従いましたが、OPで言及されているのと同じエラーが発生しました。

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

私にとって、そしてこれがいくつかの助けになれば幸いです(1.58 GB on disk)。MacOSで大きなファイルをプッシュしていました。上記の推奨コード行をコピーして貼り付けている間、プロセッサが実際にadd .プロセスを完了するのを待ちませんでした。だから私がタイプしたときgit commit -m "message"した、基本的にファイルを参照せず、コードをGitHubに正常にコミットするために必要なことをすべて完了していません。

これの証拠は、git status通常入力したときに、追加されたファイルに緑色のフォントが表示されることです。しかし、すべてが赤でした。まったく追加されなかったかのように。

そのため、手順をやり直しました。入力git add .してファイルの追加が完了するのを待ちました。次に、次の手順を実行しました。


19

これは、最初のコミットを行うのを忘れたことを意味します。

git add .
git commit -m 'initial commit'
git push origin master

git commit -m "initial commit"
Yash Agrawal

19
  1. 最初、 git add .
  2. 第二に、 git commit -m "message"
  3. 第三、 git push origin branch

スペルミスがないか確認してください。これもエラーの原因となる可能性があります。


18

逃したときにも同じ問題が発生しました:

git add .

(少なくとも1つのファイルが必要です。そうしないと、もう一度エラーが発生します。)


18

初めてプッシュする前にコミットを忘れた場合に発生します。ただ走れ:

git commit -m "first commit"

17

現在のステータスを確認するには、git status

次の手順も実行してください。

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

16

これは、ファイルを追加し、コミットとプッシュを忘れたときに発生します。したがって、ファイルをコミットしてからプッシュします。


14

私も同じ問題を抱えていました。私は次の手順でそれを行いました:

1. git commit -m 'message'
2. git config --global user.email "your mail"
3. git config --global user.name "name"
4. git commit -m 'message'
5. git push -u origin master

14

デタッチされたHEADモードでの作業中にこのエラーが発生した場合は、次のようにできます。

git push origin HEAD:remote-branch-name

参照:切り離されたヘッドからのGitプッシュの作成

リモートブランチとは異なるローカルブランチにいる場合は、次のようにできます。

git push origin local-branch-name:remote-branch-name

13

外部リポジトリ(GitHub)からコードをチェックアウトし、それを個人用/内部システムにインポートするシナリオでは、このコマンドは本当に優れています。

git push --all origin

これにより、参照をチェックしたりコミットを要求したりすることなく、すべてのローカルブランチをリモートにプッシュします。


12

これは、プッシュしようとしているブランチ名にタイプミスがある場合にも発生します。


2
私がウェブ検索でここに来た多くの人が実際に名前を間違って入力したのではないかと思います。
セージ2014年

12
git add .

は、あなたが必要とすることすべてです。このコードは、ディレクトリ内の追跡されていないすべてのファイルを追跡します。


10

git init最初のコミットを実行してプッシュした後でもこの問題に直面している場合。次に、以下を試すことができます、

git checkout -b "new branch name"
git push origin "new branch name"

コードが新しいブランチとしてプッシュされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.