gitエラー: リモートへの参照のプッシュに失敗しました 質問する

gitエラー: リモートへの参照のプッシュに失敗しました 質問する

昨日は押せたのに、今は押せない。

を使用するとgit push origin master、エラーが発生します:

$ git remote -v
origin  https://github.com/REDACTED.git (fetch)
origin  https://github.com/REDACTED.git (push)

$ git push origin master
Username for 'https://github.com': REDACTED
Password for 'https://[email protected]':
To https://github.com/REDACTED.git
! [rejected]         master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/REDACTED.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

作業ディレクトリとリモート リポジトリは次のようになります。

Windows ファイル フォルダーのスクリーンショット。ディレクトリは .git、css、js です。ファイルも index.php、readme、setsu.php です。矢印の付いた「local」という単語は css フォルダーを指しています。下のスクリーンショットは、見出しが「github」で、css フォルダーと index.php ファイルです。

ベストアンサー1

(注記:2020年10月開始main、新しいリポジトリはではなく のデフォルトブランチで作成されますmaster既存のリポジトリのデフォルトブランチの名前を から に変更しmasterますmain
2014 年の回答の残りの部分は、「」mainを使用するように更新されました。

(以下は、github.comそれ自体がダウンしていないことを前提としています。えりお指摘するコメント: 見るwww.githubstatus.com念のため)

ローカルで作業中に GitHub リポジトリに新しいコミットがプッシュされた場合は、以下を使用することをお勧めします。

git pull --rebase
git push

完全な構文は次のとおりです。

git pull --rebase origin main
git push origin main

Git 2.6以降の場合(2015年9月)、(1回)

git config --global pull.rebase true
git config --global rebase.autoStash true

シンプルなものgit pullで十分です。
(注:Git 2.27 2020年第2四半期merge.autostashリベースなしで通常のプルにも使用できます)

そうすれば、新しく更新された(または: )--rebase上にローカルコミット (の部分)を再生することになります。origin/mainorigin/yourBranchgit pull origin yourBranch

より詳しい例については、第6章 リベースによるプルGit ポケットブック

以下をお勧めします:

# add and commit first
#
git push -u origin main

# Or git 2.37 Q2 2022+
git config --global push.autoSetupRemote true
git push

これにより、ローカルのメイン ブランチとその上流ブランチの間に追跡関係が確立されます。
その後、そのブランチへの今後のプッシュは、次の簡単な操作で実行できます。

git push

また、Git 2.37+ とそのグローバル オプションpush.autoSetupRemotegit push最初の単純なものでも、同じことが行われます (つまり、ローカルmainブランチとその上流ブランチの間に追跡関係を確立しますorigin/main)。

見る "新しいブランチを明示的にプッシュする必要があるのはなぜですか?「」。


OPはすでにコミットをリセットしてやり直すの上にorigin/main

git reset --mixed origin/main
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin main

する必要はありませんpull --rebase

注:git reset --mixed origin/mainは と書くこともできますgit reset origin/main。この--mixedオプションは を使用する場合のデフォルトオプションです。git reset

おすすめ記事