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

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

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

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

GitHub

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

Q&A

解決済

2回答

1911閲覧

GitHub push, commit時のエラーに関して

yuka0128

総合スコア4

Git

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

GitHub

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

0グッド

0クリップ

投稿2021/07/09 11:58

GitHubに全ファイルをpushしたいのですがこのようなエラーが発生していて公開できません。
ご教示お願いいたします。
下記に詳しく状況を説明致します。

pushコマンドを打った際のエラーメッセージです。

! [rejected] main -> main (fetch first) error: failed to push some refs to 'https://github.com/**.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.```

現状としてgit statusの状態は

On branch main Your branch and 'origin/main' have diverged, and have 5 and 4 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working tree clean

私の解釈ですと、リモートとローカルとがfast-forwardsできない状態になっていると思いました。
共通のコミットから私の手元では5コミット進んでおり、リモートでは別の4コミットがpushされている状態だと思い、以下のことを試したのですが解決に至っていません。

・stashで退避してpullしてmerge(そもそもやり方が正しいかわかりませんが)
・git reset --hard origin/main(リモートの状態に追従させたくないのでこのやり方は間違っていると思いますが)

前提として、先日同じようなエラーが発生して急ぎでpushする必要があったため、手動でpushしました。それが余計複雑になってしまっているのかもしれません。。

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

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

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

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

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

guest

回答2

0

ベストアンサー

おそらくこういう状態になっているのでしょう。
イメージ説明
以下のように作業することで、ローカルのmasterブランチ内容をリモートブランチにpushできると思います。

git

1# ①origin/mainを親とするマージコミットを作る 2git checkout main 3git merge origin/main 4 5# ②pushする 6git push origin main

イメージ説明

投稿2021/07/09 13:13

ku__ra__ge

総合スコア4524

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

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

yuka0128

2021/07/09 22:03

とてもわかり易いマーブルダイアグラムまでありがとうございます! 上記の方法で試したのですがうまく行かず、、 $ git checkout main Already on 'main' Your branch and 'origin/main' have diverged, and have 5 and 5 different commits each, respectively. (use "git pull" to merge the remote branch into yours) $ git merge origin/main fatal: refusing to merge unrelated histories となってしまいます。 参考になるかわかりませんが、共通の祖先を持っていないブランチ同士でもマージを行うことができる--allow-unrelated-histories オプションをつけてみたのですが error: The following untracked working tree files would be overwritten by merge: 〇〇ファイル名 Please move or remove them before you merge. Aborting となってしまいます。
ku__ra__ge

2021/07/09 23:29

うーん、共通の祖先を持っていないブランチが存在する状態というのは普通はありえない気がします。 無理やりpushできるようにしたいのであれば、①mainのファイルをgit操作ではなく普通のファイル操作で別の場所に退避。②mainブランチを git reset --hard origin/main で origin/main のコミットを指すように変更。③退避していたファイルを上書きして手動で差分をマージしてコミット。④pushする。という手順でできると思います。
yuka0128

2021/07/11 22:48

返答遅れて申し訳ありません。 上記の方法で無理矢理ですがpushできました! また、説明が仔細で大変助かりました。 この様な状況に陥ったのも心当たりがある気がしますので今後注意してく所存です。 この度は本当にありがとうございました!
guest

0

pullしろというエラーが出てるのでpullしてみてはどうでしょうか。

git checkout main git pull origin/main git push origin

投稿2021/07/10 02:56

Noin

総合スコア188

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

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

yuka0128

2021/07/11 22:52

ご回答ありがとうございます。 そのやり方は何度も試したのですが解決できませんでした。 ですが今回は半強制的にpushできたので安堵しています。 ご協力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問