新しいブランチをプルし、ローカルで変更を加え、コミットしてプッシュしようとしました。このエラーが発生しました:! [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'
これがどのように発生する可能性があり、どのように修正できるかを誰かが説明できますか?
ブランチをプルしたときに、「-track」オプションを使用しましたか(ローカルブランチがリモートブランチを追跡し続けるため)。そうしなかった場合は、「マージ」コマンドが機能しないことを説明できます。
手動でマージを行うことができます:
git fetch
git merge Origin/groups
ローカルリポジトリとリモートリポジトリを比較するには、次のコマンドをお勧めします(エイリアスに追加すると便利です)。
git log --graph --oneline --all --decorate
プロジェクト履歴ツリーが印刷され、ブランチラベルが表示されます。したがって、ブランチとOriginブランチが分岐する場所がわかります。
注:「マージ」の代わりに線形履歴を保持したい場合は、プッシュする前にリモートでローカルブランチの「リベース」を実行できます。
git rebase Origin/groups
git Push Origin groups
私は別の問題でここに来ました。
私のgitはすべてのブランチをプッシュするように設定されました。私はブランチFOOにいましたが、それはまた、最新ではなかったマスターをプッシュしようとしていました。トリックは、マスターをプッシュしようとしていることに気づきました。
To [email protected]:repo
! [rejected] master -> master (non-fast-forward)
.gitconfigに以下を追加して、デフォルトで現在のブランチのみをプッシュします。
[Push]
default = current
これは尋ねられた質問に対する答えではありません。同じエラーメッセージで別の問題が発生しました。
私のローカルブランチには、適切に構成された[gitpull]から変更をプルするためのリモートブランチがありませんでした。これは、git remote show Origin
のo/pから明らかでした。そのため、変更をプルするには、git pull Origin <branch_name>
ではなくgit pull
を使用する必要がありました。