私はリモートの裸でない「メイン」リポジトリをセットアップし、それを自分のコンピューターに複製しました。ローカルに変更を加え、ローカルリポジトリを更新して、変更をリモートリポジトリにプッシュしました。その時点までは順調でした。
さて、リモートリポジトリで何かを変更する必要がありました。次に、ローカルリポジトリで何かを変更しました。リモートリポジトリへの変更は必要ないことに気付きました。そのためgit push
、ローカルリポジトリからリモートリポジトリに移動しようとしましたが、次のようなエラーが発生しました。
履歴が失われないようにするために、非早送りの更新は拒否されました。リモートの変更をマージしてから、もう一度プッシュします。詳細については、「早送りに関する注意」セクション
git push --help
を参照してください。
たぶん
git push --force
ローカルコピーがリモートコピーに変更をプッシュし、同じにするように強制します。強制的に更新しますが、リモートリポジトリに戻ってコミットすると、ファイルに古い変更(メインのリモートリポジトリに以前あった変更)が含まれていることに気づきました。
私はで述べたように答えの1のコメント:
[強制]を試みましたが、変更を保存するためにマスターサーバーに戻ると、古いステージングが表示されます。したがって、私がコミットするとき、リポジトリは同じではありません。もう一度git pushを使用しようとすると、同じエラーが発生します。
この問題を解決するにはどうすればよいですか?
git push --force
確かにプッシュを強制する別の有効な方法でありgit push origin master --force
、Gitのデフォルトと同様にブランチをプッシュしますがpush.default config settings
、具体的にプッシュされるブランチは、2.0以前のGitバージョンと2.0以降のGitバージョンで異なります。
git push --force
最近はFWIWで問題なく動作します...
git push --force-with-lease
それがあなたが期待する状態でない限り、それはより良く動作します:)、それはブランチを更新することを拒否します。(developer.atlassian.com/blog/2015/04/force-with-leaseを参照)
git push -force
より慎重に実行できるようになります。