[解決済み】Git reset --hard でリモートリポジトリにプッシュする。
2022-04-04 09:23:26
質問
私はいくつかの悪いコミット(この例ではD、E、F)があるリポジトリを持っていました。
A-B-C-D-E-F マスターとオリジン/マスター
ローカルリポジトリを具体的に修正したのは
git reset --hard
. リセット前にブランチを取ったので、今は以下のようなレポになっています。
A-B-C master
\ D-E-F old_master
A-B-C-D-E-F origin/master
さて、これらの悪いコミットの一部が必要になったので、必要な部分を選んで新しいコミットを行い、ローカルでは次のようになっています。
A-B-C-G-H master
\ D-E-F old_master
さて、この状態をリモートリポにプッシュしたいと思います。しかし
git push
Gitは、丁重に筆おろしをします。
$ git push origin +master:master --force
Total 0 (delta 0), reused 0 (delta 0)
error: denying non-fast forward refs/heads/master (you should pull first)
To [email protected]:myrepo.git
! [remote rejected] master -> master (non-fast forward)
error: failed to push some refs to '[email protected]:myrepo.git'
リモートレポにローカルレポの現在の状態を取得させるには?
どのように解決するのですか?
強制的に押してもダメな場合(
git push --force origin
または
git push --force origin master
で十分です)、リモートサーバーが早送り以外のプッシュを拒否していることを意味するかもしれません。
receive.denyNonFastForwards
コンフィグ変数 (
ギットコンフィグ
のマニュアルを参照してください)、あるいは update/pre-receive フックを使ってください。
古いGitでは、この制限を回避するために
git push origin :master
(ただし
:
をブランチ名の前に置いてから、再度
git push origin master
を指定したブランチです。
もし、これを変更できないのであれば、唯一の解決策は、履歴を書き換える代わりに コミットを作成する 後戻り D-E-F の変更点 :
A-B-C-D-E-F-[(D-E-F)^-1] master
A-B-C-D-E-F origin/master
関連
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Gitのプッシュを正しく強制する方法は?
-
[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ローカルにない作業がリモートに含まれているため、アップデートが拒否された
-
[解決済み】git rev-parseは何をするのですか?
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
[gitコミット失敗の解決] 現在のブランチの先端が後ろにあるため、更新が拒否されました。
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] Gitのmasterブランチを、別のブランチから完全に置き換えるには?[重複]。
-
[解決済み] 修正したコミットをリモートの Git リポジトリにプッシュするにはどうしたらいいですか?
-
[解決済み] リベースの後、同じブランチに Git のコミットが複製される