※当サイトの記事には、広告・プロモーションが含まれます。

Gitで『error: src refspec main does not match any』のエラー出たが、対応方法も提示して欲しいよね...

gigazine.net

現在の地球と太陽は生命にとって程よい距離に保たれていますが、今後10億年ほどで地球上の水が蒸発するほど太陽放射が強くなり、75億年以内に太陽が現在の256倍に膨張して地球を飲み込んでしまうと予想されていますが、そうはならないとする学説もあります。

「太陽に飲み込まれなかった80億年後の地球」に似た惑星が4000光年離れた場所で発見される - GIGAZINE

新たに天文学者らが、地球から4000光年離れた位置にある恒星系で、「膨張した太陽に飲み込まれなかった場合の80億年後の地球」に似た惑星を見つけたと報告しました。

「太陽に飲み込まれなかった80億年後の地球」に似た惑星が4000光年離れた場所で発見される - GIGAZINE

⇧「侃々諤々(かんかんがくがく)」大いに結構なのですが、地球消滅に関わる予測は確度が重要と思われるので、希望的観測は最後の手段的に考えておきたいところですかね。

Gitで『error: src refspec main does not match any』のエラー出たが、対応方法も提示して欲しいよね...

開発環境を手順通り進めて、エラーになって遅々として進まないこと、あるあるだよね。

で、今回も、全くもって手順通り進まない(哀)

シェルスクリプト内で、git pushとかしてるっぽくて、

error: src refspec main does not main any
error: failed to push some refs to 'github.com:[Gitユーザー名、または、Organization名]/[Gitリポジトリ名].git'

というエラーが出たんだが、ネットの情報を漁った感じでは、

qiita.com

qiita.com

miginihitsuji.com

⇧ 上記サイト様によりますと、

  1. ローカルのリポジトリとリモートのリポジトリのブランチが異なる
  2. ブランチが存在しない
  3. git addされていない

のいずれかの可能性があるらしい。

ただ、本当に、この3つ以外のエラーの原因の可能性が無いと言えるのかは分からんのよね...

頼むから、

 エラーメッセージ: エラーの原因 = 1:1

にしてくれないだろうか?

Oracle Databaseとかもそうなんだけど、

 エラーメッセージ: エラーの原因 = 1:N

にしてることが多くて頭抱える...

話を元に戻すと、対応方法としては、

■1. ローカルのリポジトリとリモートのリポジトリのブランチが異なる

■2. ブランチが存在しない

こちら、ネット上で確認方法について言及している情報が無かったので、確認方法については推測になります。

ローカルリポジトリの検索

find [検索対象のディレクトリ] -name ".git" -type d

.gitディレクトリのあるディレクトリに移動

cd [.gitディレクトリのあるディレクトリ]

現在のローカルのブランチの確認(Git v2.22.0 以降)

git branch --show-current

ローカルのブランチの一覧を確認

git branch

リモートのブランチの一覧を確認

git branch -r

⇧ 差分を確認し、ローカルのブランチがリモートのブランチに存在しないものになっている場合、pushはできないってことになるかと。

以下、ChatGPTに確認した内容。正常に動作するか不明。

ローカルにしか存在しないブランチ

git branch | grep -v -F -f <(git branch -r | sed 's/origin\///')

リモートにしか存在しないブランチ

git branch -r | sed 's/origin\///' | grep -v -F -f <(git branch)

⇧ 兎に角、ローカルのブランチがリモートのブランチにも存在しないとpushはできないってことかね。

そもそも、何故に、ローカルとリモートでブランチが不一致になるかについては、

qiita.com

⇧ Gitの仕様変更が影響しているか、

qiita.com

⇧ ローカルのブランチを元にブランチを作成している場合に起こる事象と言えそう。

余程、古いGitを利用していなければ問題ないのかと思いきや、

www.publickey1.jp

qiita.com

⇧ 自分で変更が必要ということなんかね?

とりあえず、

git-scm.com

⇧ Git側で良しなに設定されているわけではないってことなんかね?

 

■3. git addされていない

こちらも、git addが実行済みかどうかを確認する点については、ネット上の情報で言及しているものが無かった。

ローカルリポジトリの検索

find /path/to/search -name ".git" -type d

.gitディレクトリのあるディレクトリに移動

cd [.gitディレクトリのあるディレクトリ]

git add実行済みかどうかの確認

git status

git add した後にインデックスと最新のコミットとの変更点を確認

git diff --cached

⇧「git diff --cached」の実行結果が何も表示されない場合は、「git add」が未実行ということになるっぽい。

現在の状況を確認する手順が端折られていること多過ぎて辛い...

環境構築、疲弊しますな...

毎度モヤモヤ感が半端ない…

今回はこのへんで。