質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

2回答

367閲覧

初めてのGitHubのpushができません

_chii

総合スコア50

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2024/04/06 16:03

編集2024/04/07 05:19

実現したいこと

GitHubにpushをしたい

発生している問題・分からないこと

git push をすると以下のようなエラーになってしまいます...

! [remote rejected] main -> main (failed) error: failed to push some refs to 'https://github.com/○○/○○.git'

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

五月雨になりますが、試したことを記述します
こちらご教授いただけないでしょうか🙇‍♀️

※追記
pushと強制pushを実行したときのコマンドとそのエラーメッセージを表示を以下に記述します

以下は一般的なpush

% git push -u origin main To https://github.com/○○/○○.git ! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/○○/○○.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. If you want to integrate the remote changes, hint: use 'git pull' before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

強制push

% git push -u origin main -f Enumerating objects: 98, done. Counting objects: 100% (98/98), done. Delta compression using up to 8 threads Compressing objects: 100% (85/85), done. Writing objects: 100% (96/96), 706.14 KiB | 176.54 MiB/s, done. Total 96 (delta 9), reused 92 (delta 7), pack-reused 0 remote: Resolving deltas: 100% (9/9), done. remote: fatal: did not receive expected object cc2c1e6b0bf740ddb2ff643d8666d9c4c9d0b1aa error: remote unpack failed: index-pack failed To https://github.com/○○/○○.git ! [remote rejected] main -> main (failed) error: failed to push some refs to 'https://github.com/○○/○○.git'

ちなみにhintに書かれているpullを試した結果です(下記を実行したあとにpushをしてもだめでした)

% git pull origin main From https://github.com/○○/○○.git * branch main -> FETCH_HEAD fatal: refusing to merge unrelated histories

別の試した方法

参考にした記事
https://wonderful-tereshkova-38f91d.netlify.app/GitHub%E3%81%B8%E3%81%AEpush%E3%81%8C%E3%80%8Cfetch%20first%E3%80%8D%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6rejected%E3%81%A8%E3%81%AA%E3%81%A3%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%AF%BE%E5%87%A6/

上記の記事を参考にして git status でリモートとローカルでマージされていないファイル(わたしの場合はREADME.md)を追加しました。

「これでやっとpushできる」と思ったのですが、これでもpushは同じ結果でした。
再度 git status をしても以下のように問題ありませんでした。
本当にわかりません...

% git status On branch main nothing to commit, working tree clean

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2024/04/06 23:35

github.com/○○/○○.git リポジトリは 作ってあります?
nanashi123

2024/04/06 23:43

ブランチ名が被っていますか? 一度main以外の名前で新規にブランチを作成し、プッシュを試してください
ikedas

2024/04/07 01:35

> ちなみに強制pushも試してみましたがそれもだめでした... 次のことを、省略や要約などせず全てを具体的に記してください。 ・どのようなコマンドを実行したのか、具体的に。 ・その結果どのようなエラーメッセージが表示されたのかを、具体的に。 ちなみに、このコメント欄に書くのではありません。質問文を編集して書いてください。
_chii

2024/04/07 02:52 編集

> github.com/○○/○○.git リポジトリは 作ってあります? はい、こちら作成済みで remote コマンドを実行済みです
_chii

2024/04/07 02:53

> 一度main以外の名前で新規にブランチを作成し、プッシュを試してください こちら結果が変わりませんでした...
_chii

2024/04/07 02:53

> 次のことを、省略や要約などせず全てを具体的に記してください。 ありがとうございます! 質問文を編集しました
nanashi123

2024/04/07 06:56

少し遠回りなやり方ですが、一度ローカルフォルダのいずれかにgit initで.gitを生成し、ブランチを一つ作成した状態で、そちらに対してプッシュをテストしてみましょう フォルダパス.gitがリモートリポジトリのURLとして使用できるので、git remoteでそれを登録した後にプッシュします pushそのものが機能する場合は成功するはずです あと可能性の一つとして、実はGitHubへのプッシュが成功しているケースも考えられるので、新規生成されたブランチにGitHub上で変更可能かどうかも併せて確認してみてください
guest

回答2

0

ベストアンサー

#1

エラーメッセージをよく読みましょう。意味もなく何行もメッセージがでているわけではありません。

% git push -u origin main To https://github.com/○○/○○.git ! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/○○/○○.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. If you want to integrate the remote changes, hint: use 'git pull' before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Gitは何か問題が起こると、どうしたらいいかを提案してくれます。「hint」のところにいろいろ書いてありますね。

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

日本語にするとこんなことを言っていますよね。

更新は拒否された。理由は、お前の現在のブランチの先頭が相手のリモートブランチより遅れているからだ。リモートの変更を取り入れたければ、pushする前に「git pull」を実行しろ。
詳しいことは「git push --help」の中の「Note about fast-forwards」を読め。

つまり、質問者さんが自分のクローン上で作業している間に他の人の新たなコミットがリモートブランチに追加されたので、このままでは質問者さんが新たなコミットをリモートブランチに追加できません。追加できるようにするにはリモートブランチの新たなコミットを取り込む必要があります。そのためのコマンドはgit pullです。なぜorigin/mainへの強制pushやorigin/mainのmergeをしようと考えついたのか知りませんが、ヒントに書いてある通りにするのがよいのではないですか。

つまり、まずgit pullを実行 (競合が起こりうるのならgit pull --rebaseのほうがよいでしょう) してから、改めてgit pushすればよいでしょう。

#2

% git pull origin main From https://github.com/○○/○○.git * branch main -> FETCH_HEAD fatal: refusing to merge unrelated histories

git pullはリモートの履歴を取り込みますが、ここでは何か全く関係ない履歴を取り込もうとしているという理由で拒否されていますね。

いろいろいじくり回しているうちに、リモートブランチを関係ないローカルブランチのオリジンにしてしまっているのでしょう。

最初のエラーメッセージが出た時点で #1 で述べたようにgit pullを実行していればよかったのですが、こんなことになってしまっては質問者さんの作業スペースがどうなっているのかはもはやだれにもわかりません。素直に最初から作業をやり直すのがいいと思います。つまり、次のとおりです。

  1. 現在のローカルブランチはとりあえず退避する (作業スペースのディレクトリをリネームする)。
  2. リモートブランチのクローンを作り直す。
  3. 修正作業をやり直す。1. で退避したものと見比べて修正をする。出来上がったものをコミットする。
  4. リモートにpushする。問題が起きたらヒントに従って対応。

投稿2024/04/07 07:34

編集2024/04/07 08:00
ikedas

総合スコア4343

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_chii

2024/04/08 14:13

解決することができました! ありがとうございました!
guest

0

(non-fast-forward) なので 辻褄が合わなくなってますね。
今 github にあるのを壊して良いなら 強制pushですが
git push -u origin main -f
ではなく
git push -f origin main
もしくは
git push -uf origin main
で試してみて。

ただ、、、

> 一度main以外の名前で新規にブランチを作成し、プッシュを試してください こちら結果が変わりませんでした...

があるのが不安材料

投稿2024/04/07 04:01

winterboum

総合スコア23351

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_chii

2024/04/07 04:43

ありがとうございます。 こちらもだめでした... ただひとつ思ったのことがあるのですが、もともと今行っているのはElectron React Boilerplateを使って既存のプロジェクトcloneしています。 https://qiita.com/udayaan/items/2a7c8fd0771d4d995b69#electron-react-boilerplate%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6electron--react%E3%81%AE%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B ただもちろんこのままではElectron React Boilerplateのリポジトリに向いてしまうので git remote remove origin をしてから git remote add origin https://github.com/○○/○○.git を実行しました そしたら以下のように自分がpushしたいリポジトリに変更しました ``` % git remote -v origin https://github.com/○○/○○.git (fetch) origin https://github.com/○○/○○.git (push) ``` 外部のリポジトリをcloneしてそれを自分のリポジトリにpushしようとしているのですが、それが何か関係しているでしょうか
winterboum

2024/04/07 09:13

最初の質問 github.com/○○/○○.git リポジトリは 作ってあります? に、 はい、こちら作成済みで remote コマンドを実行済みです とありますが「remote コマンドを実行して作成」という意味ですか?
ikedas

2024/04/14 01:24

gitのコマンドラインオプションはほぼどこにでも書ける (コマンドの前と "--" の後以外なら) ので、`git push -u origin main -f` と `git push -uf origin main` とは同じことではないでしょうか。
winterboum

2024/04/14 01:45

>gitのコマンドラインオプションはほぼどこにでも書ける そなのか、知らなかった
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問