昨日は押せたのに、今は押せない。
を使用すると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.
作業ディレクトリとリモート リポジトリは次のようになります。
ベストアンサー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/main
origin/yourBranch
git 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.autoSetupRemote
git 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
。