私はまだ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!
「場所のブランチマスターをマージ」が追加される理由を理解したいと思います。
git-pull
、リモートブランチからの変更がローカルブランチにマージされました。自動生成されたコミットはそれを意味します。
マージにより競合が発生する可能性があったため、手動で解決する必要があります。あなたの特定のケースでは、これは起こらず、gitがすべてを処理できます。
他の人が変更を加える可能性がある場合は、git pull --rebase
(つまり、新しい変更を追加します後リモートの変更。これにより、解決しなければならない競合が見つかる可能性があります)、その後git Push
結果。注意してください、これは以前に存在したことのない新しいコミットを作成します(履歴の書き換えと同様)が、クリーンで線形の履歴を提供します(マージのもつれなし)