怠惰な理由で、デフォルトのメッセージを使用して大量のコミットをプッシュしましたが、各コミットで何を変更したのか本当にわからないので、面倒になっています。
以前のコミットのメッセージだけを編集して、(可能な場合は)コミットツリーを保持するにはどうすればよいですか?
怠惰な理由で、デフォルトのメッセージを使用して大量のコミットをプッシュしましたが、各コミットで何を変更したのか本当にわからないので、面倒になっています。
以前のコミットのメッセージだけを編集して、(可能な場合は)コミットツリーを保持するにはどうすればよいですか?
回答:
一連のコミットのコミットメッセージを編集するには、次のコマンドを実行します
git rebase -i firstsha
ここfirstsha
で、編集したい最初のコミットの親コミットの識別子です。(ここでは任意の有効な参照を使用できるためgit rebase -i HEAD~4
、最後の4つのコミットが表示されます。)
開いたエディターで、変更するコミットですべての「選択」エントリを「変更」に変更し、エディターを閉じます。次に、選択したすべてのコミットのコミットメッセージを入力するように求められます。
コミットのハッシュが変更されるため、これによりコミットツリーが変更されることに注意してください。新しいツリーを強制的にプッシュするか、新しいツリーにプッシュする必要があります。また、マージを台無しにするので、マージコミットの編集は避けてください。
最後のコミットのみをすばやく編集するには、次を実行します。
git commit --amend
(ただし、コミットのためにステージングされたものには注意してください)。
preserve-merges
)
あなたが探しているのはgit rebase
です。
前のgit commit
メッセージのみを変更したい場合は、以下を使用するだけです。
git commit --amend
そして、以前のコミットに必要な変更を加えてから、編集を保存します。
ただし、古いコミットを変更する必要がある場合は、を使用する必要がありますrebase
。
git rebase -i HEAD~N
ここで、Nは元に戻したいコミットの数です。たとえば、2、12、6などです。
ここで、コミットしたテキストエディターを取得します。オプションをpick
からreword
に変更して、メッセージを変更します。
変更するすべてのコミットを特定し、それらのオプションを適切に変更したら、エディターを保存して閉じます。次に、各コミットメッセージに変更を加えます。満足したら、次のコマンドを実行できます。
git push --force
また、必要な変更を加えたので、異なるハッシュ値を使用していてもgit履歴を維持しているはずです。ここにあなたがチェックする必要があるいくつかの追加のリンクがあります:
7.6 Gitツール-履歴の書き換え
GitHubヘルプ-コミットメッセージの変更
StackOverflow-古いコミットメッセージの変更に関する質問
commit --amend
、コミットプロセスを何らかの方法で台無しにしない限り、「」する必要はありません。
git rebase -i firstsha
それfirstsha
は、親コミットのコミットのハッシュであり、メッセージを変更したいので、エディターで、に変更pick
しreword
、enter
新しいメッセージ、そして発行しますgit rebase --continue
しますgit push --force
か?
git rebase -i HEAD~N
、あなたが行きたいコミットの数であるNとだけする必要があります。from〜のメッセージを編集するすべてのコミットオプションを変更pick
しreword
、このファイルを保存し、各コミットファイルに変更を加えて保存します。作業が完了したと確信したら、必要なのはあなただけですgit push --force [Name of git branch you are were working on]
。いつでも戻ってこれを行うか、段階的に行うことができます。