35

私はちょうど新しいブランチを引っ張って、いくつかのローカルな変更を加えて、コミットして、プッシュしようとしました。私はこのエラーを与えられました:! [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'

誰かがこれがどのように起こり得るのか、そして私がそれをどのように修正できるのか説明できますか?

4

3 に答える 3

27

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

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

git fetch
git merge origin/groups

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

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

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

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

git rebase origin/groups
git push origin groups
于 2010-11-30T09:35:10.190 に答える
6

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

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

To git@git.machine:repo
 ! [rejected]        master -> master (non-fast-forward)

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

[push]
    default = current
于 2012-07-27T19:18:01.727 に答える
2

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

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

于 2016-05-02T06:24:12.317 に答える