137

最初のGithubプッシュを試しているときに、次のエラーが発生します。

[rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com: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.

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

4

7 に答える 7

107

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

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

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

于 2009-11-11T05:11:39.263 に答える
87

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

git push origin +some_branch
于 2012-03-09T05:40:26.667 に答える
20

おそらく、マージしたことのない変更がgithubにあります。変更をフェッチしてマージしてみてくださいgit pull。そうすれば、プッシュできるはずです。あなたの質問を誤解してすみません。

于 2009-11-11T05:06:08.870 に答える
13

「gitpull」を実行しても「Alreadyup-date。」と表示されてもこのエラーが発生する場合は、他のブランチの1つが最新ではないことが原因である可能性があります。別のブランチに切り替えて、ブランチが最新であることを確認してから、もう一度「gitpush」を試してください。

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

$ git checkout foo
$ git pull

コマンドを発行すると、取得したブランチを確認できます。

$ git branch
于 2012-05-02T22:42:22.673 に答える
7

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

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

git push -f 
于 2013-04-22T07:50:22.070 に答える
3

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

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

$ git tag --delete foo_tag
于 2012-06-04T11:24:44.767 に答える
2

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

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

...ブランチ名によって異なります(マスターでない場合)。

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

于 2012-07-22T01:22:56.127 に答える