web-dev-qa-db-ja.com

git:なぜ「...」のブランチ「マスター」をマージするのですか?引くときと押すとき

私はまだ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 <[email protected]>
Date:   Fri Mar 15 11:08:55 2013 -0700

    Merge branch 'master' of /foo/bar/

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

commit 64240bafb07705c...
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:06:18 2013 -0700

    Fixed bugs and updated!

「場所のブランチマスターをマージ」が追加される理由を理解したいと思います。

29
Nullptr

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

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

20
r.v

他の人が変更を加える可能性がある場合は、git pull --rebase(つまり、新しい変更を追加しますリモートの変更。これにより、解決しなければならない競合が見つかる可能性があります)、その後git Push 結果。注意してください、これは以前に存在したことのない新しいコミットを作成します(履歴の書き換えと同様)が、クリーンで線形の履歴を提供します(マージのもつれなし)

9
vonbrand