283

プロジェクトをプッシュしようとしています (新しいリポジトリ内のすべてのファイル)。手順に従いますが、プッシュすると次のgit push -u origin masterエラーが発生します。

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

このエラーが何度も発生し、どうすればよいかわかりません。

4

21 に答える 21

226

注意:これは git の推奨される使用方法ではありません。これにより、リモートの変更が上書きされます。これは、ローカルの変更をリモート マスターにプッシュする必要があることが 100% わかっている場合にのみ行ってください。

⚠️これを試してください:git push -f origin master

于 2013-05-04T12:59:15.373 に答える
196

エラーメッセージが示すように:git pullしようとする前にgit push. どうやらローカル ブランチがトラッキング ブランチと同期していないようです。

プロジェクト ルールとワークフローによっては、 を使用することもできますgit pull --rebase

于 2012-07-27T22:25:27.557 に答える
16

このエラーを受け取りました。

ローカルの git リポジトリを作成した後に github リポジトリを作成したので、github にプッシュする前にローカルへの変更を受け入れる必要がありました。この場合、唯一の変更は、github リポジトリの作成時にオプションの手順として作成された readme ファイルでした。

git pull https://github.com/*username*/*repository*.git master

リポジトリ URL は、プロジェクト github ページのここから取得されます。

ここに画像の説明を入力

その後、再初期化しました(これは必要ないかもしれません)

git init
git add .
git commit -m "update"

次に押します:

git push
于 2013-12-13T23:52:45.603 に答える
10

解決しない場合git pullは、おそらく変更をプッシュ (A) し、その後、git commit --amendいくつかの変更を追加 (B) していた可能性があります。したがって、git は、履歴を失う可能性があると考えています。A からのすべての変更が含まれているにもかかわらず、B を別のコミットとして解釈します。

             B
            /
        ---X---A

の後に誰もリポジトリを変更しない場合Aは、実行できますgit push --force

ただし、A他人から変更があった場合:

             B
            /
        ---X---A---C

A次に、人の変更をB( C-> ) にリベースする必要がありますD

             B---D
            /
        ---X---A---C

または問題を手動で修正します。その方法はまだ考えていませんでした。

于 2014-04-30T09:05:07.003 に答える
10

次のコマンドを使用します。

git pull --allow-unrelated-histories <nick name of repository> <branch name>

お気に入り:

git pull --allow-unrelated-histories origin master

このエラーは、プロジェクトに共通の祖先がない場合に発生します。

于 2016-09-16T15:12:24.777 に答える
7

これは、プロジェクトが最初にプルするように要求するように、マスターにいくつかの変更を加えたためです。とにかくプッシュしたい場合は、次のように入力してブルートフォースを使用できます。

git push -f origin master

最初に変更をコミットすることを忘れないでください。

git add .
git commit -m "Your commit message"
于 2018-03-20T16:55:09.740 に答える
4

! [拒否] マスター -> マスター (非早送り)

パニックにならないでください。これは非常に簡単に修正できます。pull を発行するだけで、ブランチが早送りされます。

$ git pull myrepo マスター

次に、プッシュを再試行すると、すべてがうまくいくはずです:

$ git push github マスター

于 2014-02-10T11:52:09.233 に答える
4

これは、開発ブランチにいて、マスター ブランチに最新の更新がないときに発生しました。

そのため、develop ブランチから git push しようとすると、そのエラーが発生しました。

master ブランチに切り替えて git pull し、develop ブランチに戻って git push することで修正しました。

$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push
于 2016-08-17T18:17:21.460 に答える
1

これは、マスターに競合する変更を加えたためです。そして、リポジトリサーバーはこれらの言葉でそれを伝えることができないため、このエラーが発生します。これらの競合を処理するのは彼の問題ではないため、彼は自分でそれを行うように求めます. として ?

1-git pull これにより、コードがリポジトリからサイト マスターのコードにマージされます。したがって、競合が表示されます。

2- これらの手動の競合を処理します。

3-

git push origin master

さきほど、あなたの問題は解決されました。

于 2016-04-04T19:51:46.997 に答える
0

この問題を解決できたのは、ローカルと git リポジトリを削除し、両端で同じものを再度作成することだけでした。今のところ問題なく動作します。

于 2013-03-26T04:27:39.470 に答える