Gitエラー: refs/heads/master:refs/heads/master [rejected] (non-fast-forward) の原因と解決方法


このエラーの原因と解決方法を以下に示します。

  1. 非直進的な変更:

    • ローカルリポジトリで他の人の変更をプッシュしようとした場合、リモートリポジトリで既に変更が行われている可能性があります。この場合、最新の変更をプルしてから再度プッシュする必要があります。
    • リモートリポジトリで他の人が変更をプッシュし、それをプルせずに自分の変更をプッシュした場合も、このエラーが発生します。この場合も、最新の変更をプルしてから再度プッシュする必要があります。
  2. ブランチの変更:

    • ブランチを作成して他のブランチにマージしようとした場合、マージ先のブランチが既に変更されている可能性があります。この場合、最新の変更をプルしてから再度マージする必要があります。

解決策としては、以下の方法があります。

  1. 最新の変更をプルする:

    git pull origin ブランチ名

    これにより、リモートリポジトリの最新の変更を取得し、ローカルリポジトリにマージします。その後、自分の変更をプッシュすることができます。

  2. 強制プッシュする:

    git push -f origin ブランチ名

    これにより、自分の変更をリモートリポジトリに強制的にプッシュします。ただし、他の人の変更を上書きする可能性があるため、注意が必要です。

  3. ブランチを変更してマージする:

    git checkout マージ先ブランチ
    git merge ブランチ名

    これにより、マージ先のブランチに切り替えてから、他のブランチをマージします。この方法は、非直進的な変更を解決するのに役立ちます。

これらの方法を試してエラーを解決してください。ただし、変更をプッシュする前に、他の人の変更をプルする習慣を身につけることをお勧めします。これにより、非直進的な変更を最小限に抑えることができます。