[解決済み] 修正したコミットをリモートの Git リポジトリにプッシュするにはどうしたらいいですか?
2022-03-19 20:53:05
質問
ソースコードで少し作業したとき、いつものようにコミットして、リモートリポジトリにプッシュしました。しかし、私はソースコードの中で私のインポートを整理するのを忘れていたことに気づきました。そこで、前回のコミットを置き換えるために、amendコマンドを実行しました。
> git commit --amend
残念ながら、このコミットはリポジトリにプッシュバックすることができません。このように拒否されます。
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
どうすればいいのでしょうか?(リモートリポジトリにアクセスできます)
どのように解決するのですか?
を押したことがあります。
--force
と
.git
レポジトリを作成し、Linusに叱られました。
ビッグタイム
. 一般的に、これは他の人々に多くの問題を引き起こすでしょう。シンプルな答えは、"Don't do it"です。
とにかくそうするためのレシピは他の人が教えてくれているようなので、ここでは繰り返さないことにします。しかし、その状況から回復するためのヒントがここにあります。 後 で修正したコミットを --force (または +master) でプッシュアウトした場合。
-
使用方法
git reflog
を使えば、修正した古いコミットを見つけることができます(これをold
を修正したものを新しいコミットと呼ぶことにします。new
). -
との間のマージを作成します。
old
とnew
のツリーを記録します。new
のようにgit checkout new && git merge -s ours old
. -
でマスターにマージします。
git merge master
-
その結果をマスターに反映させるには
git push . HEAD:master
- 結果をプッシュする。
そうすると、あなたが修正とプッシュを強制することで抹消したコミットに基づいて作業していた不運な人たちが、その結果のマージを見ることになり、あなたが支持していることがわかるでしょう。
new
オーバー
old
. の間のコンフリクトは、後でマージされたときに表示されません。
old
と
new
を修正したのですから、彼らが苦しむ必要はありません。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
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 revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み】Gitのエラー。リモートリポジトリへの接続時に「Host Key Verification Failed」。
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
[解決済み】gitの「not something we can merge」エラーの解決方法
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。
-
[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み] リモートブランチからいくつかのコミットを永久に削除する方法