この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答ややり取りは受け付けていません。 コミットメッセージに間違ったことを書きました。 メッセージを変更するにはどうすればよいですか?コミットはまだプッシュされていません。
最新のコミットメッセージを修正する git commit --amend エディターが開き、最新のコミットのコミットメッセージを変更できます。さらに、次のコマンドラインでコミットメッセージを直接設定できます。 git commit --amend -m "新しいコミットメッセージ" …ただし、これにより、複数行のコミットメッセージや小さな修正を入力するのがより面倒になる可能性があります。 これを行う前に、作業コピーの変更がステージングされていないことを確認してください。そうしないと、変更もコミットされます。 (ステージングされていない変更はコミットされません。) すでにリモートブランチにプッシュしたコミットのメッセージを変更する すでにコミットをリモートブランチにプッシュしている場合は、(上記のように)ローカルでコミットを修正した後、次のコマンドでコミットを強制的にプッシュする必要もあります。 git push--force #または git push -f 警告:強制的にプッシュすると、リモートブランチがローカルブランチの状態で上書きされます。ローカルブランチにないコミットがリモートブランチにある場合、それらのコミットは失われます。 警告:すでに他の人と共有しているコミットの修正には注意してください。コミットを修正すると、基本的に異なるSHA IDを持つように書き換えられます。これは、あなたが書き換えた古いコミットのコピーを他の人が持っている場合に問題になります。古いコミットのコピーを持っている人は、自分の作業を新しく書き直したコミットと同期する必要がありますが、これは難しい場合があるため、共有コミット履歴を書き直そうとするときは、他の人と調整するか、共有コミットの書き直しを避けてください完全に。 インタラクティブなリベースを実行する 別のオプションは、インタラクティブなリベースを使用することです。 これにより、最新のメッセージでなくても、更新するメッセージを編集できます。 Gitスカッシュを実行するには、次の手順に従います。 // nは、編集できるようにする最後のコミットまでのコミットの数です git rebase -i HEAD〜n コミットを潰したら、メッセージを編集するためのe / rを選択します。 インタラクティブリベースに関する重要な注意事項 git rebase -i HEAD〜nを使用すると、nを超えるコミットが発生する可能性があります。 Gitは最後のn個のコミットのすべてのコミットを「収集」し、その範囲のどこかにマージがあった場合は、すべてのコミットも表示されるため、結果はn +になります。 良いヒント: 複数のブランチに対してそれを行う必要があり、コンテンツを修正するときに競合が発生する可能性がある場合は、git rerereを設定し、Gitにそれらの競合を自動的に解決させます。 ドキュメンテーション git-commit(1)マニュアルページ git-rebase(1)マニュアルページ git-push(1)マニュアルページ | git commit --amend -m "あなたの新しいメッセージ" | 修正したいコミットが最新のものでない場合: git rebase --interactive $ parent_of_flawed_commit いくつかの欠陥のあるコミットを修正したい場合は、そのうちの最も古いものの親を渡します。 編集者が表示され、指定したコミット以降のすべてのコミットのリストが表示されます。 修正したいコミットの前で、ピックを言い換える(または古いバージョンのGitでは編集する)ように変更します。 保存すると、Gitはリストされたコミットを再生します。 言い換えたいコミットごとに、Gitはあなたをエディターに戻します。編集するコミットごとに、Gitはシェルにドロップします。シェルにいる場合: コミットを好きなように変更します。 git commit --amend git rebase --continue このシーケンスのほとんどは、さまざまなコマンドの出力によって説明されます。それは非常に簡単です;覚えておく必要はありません。gitrebase--interactiveを使用すると、コミットがどれだけ前であっても修正できることを覚えておいてください。 すでにプッシュしたコミットは変更したくないことに注意してください。あるいは、そうするかもしれませんが、その場合は、コミットを引き出してその上で作業を行った可能性のあるすべての人と通信するために細心の注意を払う必要があります。誰かがリベースまたはリセットを公開されたブランチにプッシュした後、どのように回復/再同期しますか? | 前のコミットを修正するには、必要な変更を加え、それらの変更をステージングしてから、を実行します。 git commit --amend これにより、新しいコミットメッセージを表すファイルがテキストエディタで開きます。最初は、古いコミットメッセージのテキストが入力されています。必要に応じてコミットメッセージを変更し、ファイルを保存してエディターを終了して終了します。 前のコミットを修正して同じログメッセージを保持するには、 git commit --amend -C HEAD 以前のコミットを完全に削除して修正するには、次を実行します git reset --hard HEAD ^ 複数のコミットメッセージを編集する場合は、 git rebase -i HEAD〜commit_count (commit_countを編集するコミットの数に置き換えます。)このコマンドはエディターを起動します。最初のコミット(変更するコミット)を「選択」ではなく「編集」としてマークし、保存してエディターを終了します。コミットする変更を加えてから実行します git commit --amend git rebase --continue 注:git commit --amendで開いたエディターから「必要な変更を加える」こともできます | すでにのように前述のように、git commit --amendは、最後のコミットを上書きする方法です。注:ファイルも上書きする場合、コマンドは次のようになります。 git commit -a --amend -m "私の新しいコミットメッセージ" | そのためにgitfilter-branchを使用することもできます。 git filter-branch -f --msg-filter "sed's / errror / error / '" $ flawed_commit..HEAD 些細なgitcommit --amendほど簡単ではありませんが、誤ったコミットメッセージの後にすでにいくつかのマージがある場合は特に便利です。 これはHEADと欠陥のあるコミットの間のすべてのコミットを書き直そうとするので、msg-filterコマンドを非常に賢明に選択する必要があることに注意してください;-) | 私はこの方法を好みます: git commit --amend -c <コミットID> それ以外の場合は、新しいコミットIDを持つ新しいコミットがあります。 | Git GUIツールを使用している場合は、[最後のコミットを修正]という名前のボタンがあります。そのボタンをクリックすると、最後のコミットファイルとメッセージが表示されます。そのメッセージを編集するだけで、新しいコミットメッセージでコミットできます。 または、コンソール/ターミナルから次のコマンドを使用します。 git commit -a --amend -m "私の新しいコミットメッセージ" | Gitリベースを使用できます。たとえば、bbc643cdをコミットするように変更し直す場合は、 $ git rebase bbc643cd ^ --interactive デフォルトのエディターで、コミットを変更する行の「pick」を「edit」に変更します。変更を加えてから、 $ git add 今、あなたは使用することができます $ git commit --amend コミットを変更し、その後 $ git rebase --continue 前のヘッドコミットに戻ります。 | 最後のコミットメッセージのみを変更したい場合は、次のようにします。 git commit --amend これにより、テキストエディタに移動し、最後のコミットメッセージを変更できるようになります。 最後の3つのコミットメッセージ、またはそれまでのコミットメッセージのいずれかを変更する場合は、git rebase -iコマンドにHEAD〜3を指定します。 git rebase -i HEAD〜3 | 複数のブランチで古いコミットメッセージを変更する必要がある場合(つまり、誤ったメッセージを含むコミットが複数のブランチに存在する場合)、次のように使用できます。 git filter-branch -f --msg-filter \ 'sed "s / <古いメッセージ> / <新しいメッセージ> / g"' --- all Gitは、書き換え用の一時ディレクトリを作成し、さらにrefs / original /に古い参照をバックアップします。 -fは、操作の実行を強制します。これは、一時ディレクトリがすでに存在する場合、またはrefs / originalの下にすでに参照が保存されている場合に必要です。そうでない場合は、このフラグを削除できます。 --filter-branchオプションをリビジョンオプションから分離します。 --allは、すべてのブランチとタグが確実に書き換えられるようにします。 古い参照がバックアップされているため、コマンドを実行する前の状態に簡単に戻すことができます。 たとえば、マスターを回復して、ブランチold_masterでアクセスしたいとします。 git checkout -b old_master refs / original / refs / heads / master | 使用する git commit --amend 詳細に理解するには、優れた投稿は4です。Gitの履歴を書き換えます。また、git commit--amendを使用しない場合についても説明します。 | それが最後のコミットである場合は、コミットを修正するだけです。 git commit --amend -o -m "新しいコミットメッセージ" (-o(-only)フラグを使用して、コミットメッセージのみを変更するようにします) 埋め込みコミットの場合は、すばらしいインタラクティブなリベースを使用してください。 git rebase -i @ 〜9#テキストエディタで最後の9つのコミットを表示する 必要なコミットを見つけ、pickをr(言い換え)に変更し、ファイルを保存して閉じます。完了! ミニチュアVimチュートリアル(または、8回のキーストローク3jcwrEscZZでリベースする方法): 時間がある場合はvimtutorを実行します hjklは移動キーに対応←↓↑→ すべてのコマンドの前に「範囲」を付けることができます。 3jは3行下に移動します 挿入モードに入る—入力したテキストがファイルに表示されます EscまたはCtrlcを押して挿入モードを終了し、「通常」モードに戻ります 元に戻すu Ctrlrでやり直し dd、dw、dlは、それぞれ行、単語、または文字を削除します cc、cw、clは、それぞれ行、単語、または文字を変更します(ddiと同じ) yy、yw、ylは、それぞれ行、単語、または文字をコピー( "ヤンキー")します 現在の位置の後または前にそれぞれ貼り付けるpまたはP :wEnterを押してファイルを保存(書き込み)します :q!Enterキーを押して保存せずに終了します :wqEnterまたはZZを保存して終了します テキストを頻繁に編集する場合は、Dvorakキーボードレイアウトに切り替えて、タッチタイピングを学び、Vimを学びます。努力する価値はありますか?はい。 ProTip™:履歴を書き換える「危険な」コマンドを試すことを恐れないでください* —Gitはデフォルトで90日間コミットを削除しません。あなたはreflogでそれらを見つけることができます: $ git reset @ 〜3#3つのコミットに戻る $ git reflog c4f708b HEAD @ {0}:リセット:@ 〜3に移動 2c52489 HEAD @ {1}:コミット:その他の変更 4a5246d HEAD @ {2}:コミット:重要な変更を加える e8571e4 HEAD @ {3}:コミット:いくつかの変更を加える ...以前のコミット..。 $ git reset 2c52489 ...そしてあなたはあなたが始めたところに戻っています *-hardや--forceなどのオプションには注意してください—データを破棄する可能性があります。 *また、共同作業しているブランチの履歴を書き換えないでください。 | 修正する あなたはいくつか持っていますここのオプション。できるよ git commit --amend それがあなたの最後のコミットである限り。 インタラクティブリベース それ以外の場合、それが最後のコミットでない場合は、インタラクティブなリベースを行うことができます。 git rebase -i [branched_from] [コミット前のハッシュ] 次に、インタラクティブリベース内で、そのコミットに編集を追加するだけです。表示されたら、git commit --amendを実行し、コミットメッセージを変更します。そのコミットポイントの前にロールバックしたい場合は、git reflogを使用して、そのコミットを削除することもできます。次に、もう一度gitcommitを実行します。 | Git GUIを使用している場合は、プッシュされていない最後のコミットを修正できます。 最後のコミットをコミット/修正 | 私はできる限りGitGUIを使用しています。これにより、最後のコミットを修正するオプションが提供されます。 また、git rebase -i origin / masterは、masterの上で行ったコミットを常に提示し、修正、削除、並べ替え、またはスカッシュするオプションを提供する優れたマントラです。最初にそのハッシュを取得する必要はありません。 | うわー、これを行うにはたくさんの方法があります。 これを行うさらに別の方法は、最後のコミットを削除することですが、作業内容が失われないように変更を保持します。その後、修正されたメッセージを使用して別のコミットを実行できます。これは次のようになります。 git reset --soft HEAD〜1 git commit -m '新しく修正されたコミットメッセージ' ファイルの追加や変更を忘れた場合は、常にこれを行います。 --hardではなく--softを指定することを忘れないでください。そうしないと、そのコミットが完全に失われます。 | 古いメッセージ(つまり、最新のメッセージだけでなく)の編集に役立つWindows / Mac GUIを探している人には、Sourcetreeをお勧めします。従う手順は画像の下にあります。 まだリモートにプッシュされていないコミットの場合: 現在のすべての変更をコミットまたは隠していることを確認してください(つまり、[ファイルステータス]タブにファイルが表示されていない)。それ以外の場合は機能しません。 [ログ/履歴]タブで、編集するコミットの1つ下のグラフで隣接する線のあるエントリを右クリックし、[<コミット参照>の子をインタラクティブにリベース...]を選択します。 変更するコミットメッセージの行全体を選択します([メッセージ]列をクリックします)。 「メッセージの編集」ボタンをクリックします。 表示されるダイアログで必要に応じてメッセージを編集し、[OK]をクリックします。 変更する他のコミットメッセージがある場合は、手順3〜4を繰り返します。 [OK]をクリックします。リベースが開始されます。すべてが順調である場合、出力は「正常に完了しました」で終了します。注:「project_path / .git / index.lock」を作成できずに失敗することがあります:ファイルが存在します。複数のコミットメッセージを同時に変更しようとしたとき。問題が何であるか、またはSourcetreeの将来のバージョンで修正されるかどうかは正確にはわかりませんが、これが発生した場合は、一度に1つずつリベースすることをお勧めします(低速ですが信頼性が高いようです)。 ...または...すでにプッシュされているコミットの場合: 上記と同様のこの回答の手順に従いますが、ブランチを強制的にプッシュするには、コマンドラインからさらにコマンドを実行する必要があります(git push origin -f)。すべてを読み、必要な注意を払うことをお勧めします! | 最新のコミットを編集するだけの場合は、次を使用します。 git commit --amend または git commit --amend -m'1行のメッセージ ' ただし、複数のコミットを続けて編集する場合は、代わりにリベースを使用する必要があります。 git rebase -i <間違ったコミットの前の1つのコミットのハッシュ> 上記のようなファイルに、edit / eまたは他のオプションのいずれかを書き込み、保存を押して終了します。 これで、最初の間違ったコミットになります。ファイルに変更を加えると、ファイルは自動的にステージングされます。タイプ git commit --amend 保存して終了し、次のように入力します git rebase --continue すべての選択が完了するまで、次の選択に移動します。 これらのことにより、特定のコミット後にすべてのSHAハッシュが変更されることに注意してください。 | 最後のメッセージのみを変更したい場合は、-onlyフラグまたはそのショートカット-oをcommit--amendとともに使用する必要があります。 git commit --amend -o -m "新しいコミットメッセージ" これにより、ステージングされたもので誤ってコミットを強化することがなくなります。もちろん、適切な$ EDITOR構成を用意することをお勧めします。次に、-mオプションを省略できます。そうすると、Gitはコミットメッセージに古いメッセージを事前に入力します。このようにして、簡単に編集できます。 | 最後の間違ったコミットメッセージを1行の新しいコミットメッセージで更新します。 git commit --amend -m "新しいコミットメッセージ" または、以下のようにGitリセットを試してください。 #頭をn回のコミットにリセットできます #最後のコミットメッセージを変更するのは良い考えではありません、 #しかし、コミットを複数のコミットに分割するアイデアを得ることができます git reset --soft HEAD ^ #最後のコミットをリセットします。では、あなた #新しいコミットメッセージで再コミットできます。 リセットを使用してコミットをより小さなコミットに分割する git resetは、1つのコミットを複数のコミットに分割するのにも役立ちます。 #頭をリセットします。最後のコミットにリセットしています: git reset --soft HEAD ^ #(HEAD〜2(コミット数)を実行することで複数のコミットをリセットできます #今、あなたの頭をリセットします複数のコミットに分割する git reset HEAD #ファイルを個別に追加してコミットし、複数のコミットを行います。例: git add app / git commit -m "アプリディレクトリ内のすべてのファイルを追加" git add config / git commit -m "構成ディレクトリにすべてのファイルを追加する" ここで、最後のコミットを2つのコミットに正常に分割しました。 | この質問にはたくさんの答えがありますが、Vimを使用して古いコミットメッセージを変更する方法を詳細に説明しているものはありません。私は自分でこれをやろうとして立ち往生していたので、ここでは特にVimの経験がない人のためにこれをどのように行ったかを詳しく書き留めます! すでにサーバーにプッシュした最新の5つのコミットを変更したかったのです。他の誰かがすでにこれから引っ張っている場合、コミットメッセージを変更することで物事を台無しにする可能性があるため、これは非常に「危険」です。ただし、自分の小さなブランチで作業していて、誰もそれを引っ張っていないと確信している場合は、次のように変更できます。 最新の5つのコミットを変更したいとし、ターミナルにこれを入力するとします。 git rebase -i HEAD〜5 *ここで、5は変更するコミットメッセージの数です(したがって、10番目を最後のコミットに変更する場合は、10と入力します)。 このコマンドを使用すると、Vimに移動し、コミット履歴を「編集」できます。最後の5つのコミットが次のように上部に表示されます。 コミットメッセージを選択します ピックの代わりに、言い換えを書く必要があります。 iと入力すると、Vimでこれを行うことができます。これにより、挿入モードになります。 (下部にあるINSERTという単語で挿入モードになっていることがわかります。)変更するコミットについては、pickの代わりにrewordを入力します。 次に、この画面を保存して終了する必要があります。これを行うには、最初にEscbuttonを押して「コマンドモード」に入ります(下部にあるINSERTという単語が消えている場合は、コマンドモードになっていることを確認できます)。次に、:と入力してコマンドを入力できます。保存して終了するコマンドはwqです。したがって、:wqと入力すると、正しい方向に進んでいます。 次に、Vimは言い換えたいすべてのコミットメッセージを調べます。ここで実際にコミットメッセージを変更できます。これを行うには、挿入モードに入り、コミットメッセージを変更し、コマンドモードに入り、保存して終了します。これを5回行うと、Vimがなくなります。 次に、すでに間違ったコミットをプッシュしている場合は、それらを上書きするためにgit push--forceを実行する必要があります。 git push --forceは非常に危険なことなので、間違ったコミットをプッシュしたためにサーバーからプルされないようにしてください。 これで、コミットメッセージが変更されました。 (ご覧のとおり、私はVimの経験があまりないので、間違った「用語」を使用して何が起こっているのかを説明した場合は、遠慮なく訂正してください!) | git-rebase-rewordを使用できます commit --amendと同じ方法で(最後だけでなく)任意のコミットを編集するように設計されています $ git rebase-reword これは、コミットを修正するためのrebase Interactiveのアクション「reword」にちなんで名付けられました。この投稿と人を参照してください-セクションインタラクティブモード- 例: $ git rebase-reword b68f560 $ git rebase-HEAD ^を言い換える | 再コミット(修正)するために、エイリアスreciとrecmを追加しました。これで、gitrecmまたはgitrecm-mでそれを行うことができます。 $ vim〜 / .gitconfig [エイリアス] ……。 cm =コミット reci = commit --amend recm = commit --amend ……。 | タイプミスのあるコミットをプッシュしたことに気づきました。元に戻すために、私は次のことを行いました。 git commit --amend -m "T-1000、高度なプロトタイプ" git push --force 警告:変更を強制的にプッシュすると、リモートブランチがローカルブランチで上書きされます。残しておきたいものを上書きしないように注意してください。また、他の誰かがブランチをあなたと共有している場合は、修正された(書き換えられた)コミットを強制的にプッシュすることに注意してください。あなたが書き直したばかりのコミットの古いコピーを持っている場合は、自分の履歴を書き換える必要があるからです。 | 私は以下を使用するのが好きです: gitステータス git add --all git commit -am "メッセージは変更についてここに表示されます" git pull <オリジンマスター> git push <オリジンマスター> | コードをリモートブランチ(GitHub / Bitbucket)にプッシュしていない場合は、コマンドラインでコミットメッセージを次のように変更できます。 git commit --amend -m "あなたの新しいメッセージ" 特定のブランチで作業している場合は、次のようにします。 git commit --amend -m "BRANCH-NAME:新しいメッセージ" 間違ったメッセージでコードを既にプッシュしていて、メッセージを変更するときは注意する必要がある場合。つまり、コミットメッセージを変更してもう一度プッシュしようとすると、問題が発生します。スムーズにするには、次の手順に従います。 それをする前に私の答え全体を読んでください。 git commit --amend -m "BRANCH-NAME:あなたの新しいメッセージ" git push -f origin BRANCH-NAME#ベストプラクティスではありません。以下を読む理由は? 重要な注意:強制プッシュを直接使用すると、他の開発者が同じブランチで作業しているコードの問題が発生する可能性があります。したがって、これらの競合を回避するには、強制を行う前にブランチからコードをプルする必要があります押す: git commit --amend -m "BRANCH-NAME:あなたの新しいメッセージ" git pull originBRANCH-NAME git push -f originBRANCH-NAME コミットメッセージがすでにプッシュされている場合、これはコミットメッセージを変更するときのベストプラクティスです。 | あなたが探している答えではありませんか? git git-commit git-rewrite-history amendとタグ付けされた他の質問を参照するか、独自の質問をしてください。