41

リポジトリAのマスターブランチをgitから複製し、Liという独自のブランチを作成しました。少し前に変更を加えて、ローカルLiの内容をリモートLiにプッシュしました。

これで、リモートマスターからローカルマスターブランチに、およびローカルマスターブランチからローカルLiにいくつかの更新をプルし、ローカルLiからリモートLiに更新をプッシュしようとしています。ただし、実行しようとすると、次のようになります。

git checkout Li
git push origin Li

次のエラーが発生します。

error: failed to push some refs to 'git@github.com:anodejs/system.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ローカルマスターブランチが更新され(git pull origin masterを呼び出した)、ローカルLiブランチにマージされていることに注意してください。ただし、ローカルLiに新しいファイルを追加したので、ローカルLiはローカルマスターと同一ではありません(ただし、これは問題ではありませんよね?)

ありがとう、李

4

4 に答える 4

36

プッシュされたブランチチップがリモートの背後にあるため、更新は拒否されました。

git config --global push.default current

上記のコマンドを試して、現在のブランチをデフォルトとして設定し、

git push
于 2013-03-07T04:15:45.007 に答える
29

で違いを見つけますgit fetch && git log Li..origin/Li。前回プッシュしてからリベースまたは再カットしたと思いますがLi、そのコマンドは、ローカルにないリモートにあるものを正確に通知する必要があります。トリプルドット構文を使用して、どちらか (両方ではない) にあるものを見つけることができます: git log Li...origin/Li.

差分が予想される場合は、 とマージしgit merge origin/Liてからgit push. 変更が不要な場合は、リモコンを で上書きしますgit push -f origin Li。リモートの変更を破棄する場合にのみ、これを行ってください。

于 2012-08-13T13:36:55.067 に答える