web-dev-qa-db-ja.com

git pullは最新と言いますが、gitPushは非早送りを拒否します

新しいブランチをプルし、ローカルで変更を加え、コミットしてプッシュしようとしました。このエラーが発生しました:! [rejected] groups -> groups (non-fast forward)それで、プルしようとしましたが、Already up-to-date.と言われました

これが私が引っ張ってから押すものです。

~/dev$ git pull Origin groups
Already up-to-date.
~/dev$ git Push Origin groups
To /mnt/ebs/git/repo.git
 ! [rejected]        groups -> groups (non-fast forward)
error: failed to Push some refs to '/mnt/ebs/git/repo.git'

これがどのように発生する可能性があり、どのように修正できるかを誰かが説明できますか?

34
Jake

ブランチをプルしたときに、「-track」オプションを使用しましたか(ローカルブランチがリモートブランチを追跡し続けるため)。そうしなかった場合は、「マージ」コマンドが機能しないことを説明できます。

手動でマージを行うことができます:

git fetch
git merge Origin/groups

ローカルリポジトリとリモートリポジトリを比較するには、次のコマンドをお勧めします(エイリアスに追加すると便利です)。

git log --graph --oneline --all --decorate

プロジェクト履歴ツリーが印刷され、ブランチラベルが表示されます。したがって、ブランチとOriginブランチが分岐する場所がわかります。

注:「マージ」の代わりに線形履歴を保持したい場合は、プッシュする前にリモートでローカルブランチの「リベース」を実行できます。

git rebase Origin/groups
git Push Origin groups
25
Benoit Courtine

私は別の問題でここに来ました。

私のgitはすべてのブランチをプッシュするように設定されました。私はブランチFOOにいましたが、それはまた、最新ではなかったマスターをプッシュしようとしていました。トリックは、マスターをプッシュしようとしていることに気づきました。

To [email protected]:repo
 ! [rejected]        master -> master (non-fast-forward)

.gitconfigに以下を追加して、デフォルトで現在のブランチのみをプッシュします。

[Push]
    default = current
5
dfrankow

これは尋ねられた質問に対する答えではありません。同じエラーメッセージで別の問題が発生しました。

私のローカルブランチには、適切に構成された[gitpull]から変更をプルするためのリモートブランチがありませんでした。これは、git remote show Originのo/pから明らかでした。そのため、変更をプルするには、git pull Origin <branch_name>ではなくgit pullを使用する必要がありました。

2
garnet