it-swarm-ja.tech

GitHubでリモートの変更をマージする方法は?

最初のGithubプッシュを試行すると、次のエラーが表示されます。

[rejected] master -> master (non-fast forward)
error: failed to Push some refs to '[email protected]:me/me.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git Push --help' for details.

これを修正してリモートの変更をマージするにはどうすればよいですか?

134
John

詳細については、「 git Push --help 」の「non-fast forward」セクションを参照してください。

「git pull」を実行し、潜在的な競合を解決し、結果を「git push」できます。 「git pull」は、コミットAとBの間にマージコミットCを作成します。

または、「git pull --rebase」を使用して、AとXの間の変更をリベースし、結果をプッシュバックすることもできます。リベースは、Aの上にXとBの間の変更を構築する新しいコミットDを作成します。

104
Thilo

ブランチ名の前に+記号を追加して、プッシュを強制することもできます。

git Push Origin +some_branch
84
SammyK

おそらく、githubにはマージしたことがない変更があります。 git pullを試して、変更を取得してマージすると、プッシュできるようになります。あなたの質問を誤解して申し訳ありません。

20

「git pull」で「Already-to-date。」と表示され、それでもこのエラーが発生する場合は、他のブランチの1つが最新ではない可能性があります。別のブランチに切り替えて、ブランチが最新であることを確認してから、「git Push」を再試行してください。

ブランチ「foo」に切り替えて更新します。

$ git checkout foo
$ git pull

コマンドを発行することで、あなたが持っているブランチを見ることができます:

$ git branch
12
David Calhoun

強制的にプッシュすることもできますが、何をしているのかよくわかっている場合にのみこれを行ってください。

コマンドは次のとおりです。

git Push -f 
7
JuLy

この問題は、競合するタグがある場合にも発生する可能性があります。ローカルバージョンとリモートバージョンが異なるコミットに同じタグ名を使用している場合、ここで終了できます。

ローカルタグを削除すると解決できます:

$ git tag --delete foo_tag
3
Zds

このエラーが発生したとき、プロジェクトフォルダー全体をバックアップしました。それから私は次のようなことをしました

$ git config branch.master.remote Origin
$ git config branch.master.merge refs/heads/master

...ブランチ名に依存します(マスターでない場合)。

それからgit pull --rebaseをしました。その後、プルしたファイルをバックアップしたプロジェクトのファイルに置き換えました。これで、変更を再度コミットしてプッシュする準備ができました。

2
IgorGanapolsky