💭

git push origin developでsrc refspec develop does not match anyと言われたら

に公開
hoge@MacBook my_app % git push origin develop

error: src refspec develop does not match any

error: failed to push some refs to 'origin'

このエラーは、コミットが一つも存在しない空のブランチをプッシュしようとしたために発生しています。

git checkout -b developコマンドでdevelopという名前のブランチを作成し、そこに移動しましたが、その時点ではまだ何の変更も記録(コミット)されていません。Gitはコミットの履歴をサーバーに送る(プッシュする)ため、送るべきコミットが一つも見つからない場合にこのエラーを出力します。


詳しい解説

error: src refspec develop does not match anyというエラーメッセージを分解すると、以下のようになります。

  • src refspec: "Source Reference Specification" の略で、プッシュしようとしている「送信元」のことです。今回はdevelopブランチを指します。
  • does not match any: Gitがあなたのローカルリポジトリ内で、プッシュできる実体(コミットの履歴)を持つdevelopという名前の参照を見つけられなかった、という意味です。

簡単に言うと、Gitに「developという名前の箱をサーバーに送って」と頼んだものの、その箱が空っぽだったので、「送るべき中身(コミット)が見つかりません」と断られている状態です。


解決策

最初のコミットを作成することで、この問題を解決できます。具体的には、何かしらのファイルをリポジトリに追加してコミットします。一般的には、プロジェクトの概要を記述するREADME.mdファイルを作成するのが良い習慣です。

以下の手順を実行してください。

  1. (もしdevelopブランチにいなければ)developブランチにいることを確認します。

    git checkout develop
    
  2. 空のREADME.mdファイルを作成します。

    touch README.md
    
  3. 作成したファイルをステージングします。

    git add README.md
    
  4. 最初のコミットを作成します。

    git commit -m "Initial commit"
    
  5. 再度プッシュを試みます。
    これでdevelopブランチに中身(コミット)ができたので、プッシュは成功するはずです。

    git push origin develop
    

Discussion