37

私はまだgit初心者です。いくつかのソースファイルを変更してコミットしました。それから、やったgit push。しかし、私はこのエラーを受け取りました。

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

git pullこの拒否は、私が以前はしなかったようですpush。だから、私はしましたgit pull。さて、他の人によって2つの変更されたファイルがありました。

その後、 git pushうまくいきました。

質問:この場合、元のコミットメッセージで次のようなログがもう1つ表示されます。

commit 59e04ce13b8afa...
Merge: 64240ba 76008a5
Author: Jone Doe <jone@doe.com>
Date:   Fri Mar 15 11:08:55 2013 -0700

    Merge branch 'master' of /foo/bar/

そして、これは私の元のコミットメッセージです。

commit 64240bafb07705c...
Author: Jone Doe <jone@doe.com>
Date:   Fri Mar 15 11:06:18 2013 -0700

    Fixed bugs and updated!

「ロケーションのブランチマスターをマージ」が追加された理由を理解したい。

4

2 に答える 2

27

を実行するとgit-pull、リモートブランチからの変更がローカルブランチにマージされました。自動的に生成されたコミットはそれを意味します。

マージすると競合が発生する可能性があり、その場合は手動で解決する必要があります。あなたの特定のケースでは、これは起こらず、gitがすべてを処理することができました。

于 2013-03-15T18:26:08.527 に答える
13

他の人による変更がある可能性がある場合は、 (つまり、リモート変更のgit pull --rebaseに新しい変更を追加します。これにより、解決する必要のある競合が見つかる可能性があります)、結果を実行することをお勧めします。注意してください。これにより、(履歴の書き換えと同様に)これまで存在しなかった新しいコミットが作成されますが、クリーンで線形の履歴が得られます(マージのもつれはありません)。git push

于 2013-03-16T01:53:21.410 に答える