[解決済み] プッシュ後に git のコミットメッセージを変更する (誰もリモートからプルしていないと仮定した場合)
質問
gitのコミットとそれに続くプッシュを行いました。コミットメッセージを変更したいのですが、どうすればよいでしょうか。私が正しく理解しているならば、このような変更を行う前に誰かがリモートリポジトリからプルしているかもしれないので、これはお勧めできません。誰もpullしていないことが分かっている場合はどうすればよいのでしょうか?
このような方法はあるのでしょうか?
どのように解決するのですか?
履歴の変更
最新のコミットであれば、単純にこのようにすればよいでしょう。
git commit --amend
これにより、最後のコミットメッセージが表示されたエディターが表示され、メッセージを編集することができます。 (あなたは
-m
は、古いメッセージを消去して新しいメッセージを使いたい場合)
プッシング
そして、プッシュするときは、こうしてください。
git push --force-with-lease <repository> <branch>
または、"+"を使用することができます。
git push <repository> +<branch>
または
--force
:
git push --force <repository> <branch>
これらのコマンドを使用する場合は、注意が必要です。
-
誰かが同じブランチに変更を加えた場合、その変更を破棄するのは避けたいでしょう。 そのため
--force-with-lease
オプションは最も安全で、上流の変更があれば中断されるからです ( -
ブランチを明示的に指定しなかった場合、Git はデフォルトのプッシュ設定を使用します。 デフォルトのプッシュ設定が "matching" である場合、複数のブランチでの変更を同時に破棄することができます。
プル/フェッチの後処理
すでにpullした人はエラーメッセージが表示されるので、次のような方法で更新する必要があります(自分では何も変更していないと仮定して)。
git fetch origin
git reset --hard origin/master # Loses local commits
を使用する場合は注意が必要です。
reset --hard
. ブランチに変更があった場合、その変更は破棄されます。
履歴の修正に関する注意点
破壊されたデータは、実際には古いコミットメッセージだけですが
--force
はそれを知らないので、他のデータも喜んで削除します。 そこで
--force
しかし、破壊されたデータがコミットされるとき、しばしば reflog から古いコミットを復元することができます。
孤児
破壊されるのではなく、孤児となったコミットは定期的に削除されますが)。
もし、データを破壊していないと思うのであれば、以下のコマンドは使わないでください。
--force
...
悪いことが起こるかもしれない
.
このため
--force-with-lease
の方がやや安全です。
関連
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] Git にファイルモード (chmod) の変更を無視させるには?
-
[解決済み] Gitで落としたスタッシュを復元する方法とは?
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み] 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 rev-parseは何をするのですか?
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push some refs to .......
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] GitLabのエラーを修正しました。"このプロジェクトでは保護されたブランチにコードをプッシュすることが許可されていません"?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?