Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

gitで過去のコミットを書き換える方法まとめ

      2013/07/15

コミットしてしまった後に恥ずかしい間違いに気づいて書き換えたい時の対処方法。

まずは基本。直前にコミットしたものを修正するには、

  1. ファイル(hoge.txt) を修正する
  2. 修正したファイルをaddする
    $ git add hoge.txt
  3. 修正をコミットする
    $ git commit –amend

これだけです。コミットのコメントのみを書き換えたい時は、3だけを実行すればOK。

次はもっと古い過去を書き換えたい時。ちょっと手順が複雑になります。

  1. 今のブランチ名をい記録する (ここではmasterとします)
  2. 書き換えたい歴史を探す (今回はコミットのハッシュ値が abcd1234 とする)
    $ git log
  3. コミットを取り出す
    $ git checkout abcd1234
  4. 恥ずかしい間違いを修正する
  5. 修正したファイルをaddする
    $ git add hoge.txt
  6. 修正をコミットする
    $ git commit –amend
  7. masterの現在と書き換えたい過去までの間にあったまともな歴史を、今書き換えた過去の上に再構築する
    $ git rebase –onto HEAD abcd1234 master
    ※過去が古ければ古いほど時間がかかります

結論。遠い過去の記憶を掘り起こすのは人と同じで大変です (^^;

 - IT技術, プログラミング

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
Windows XPのディスクアクセスがうるさいので自動デフラグを無効にする

今更ですが、Windows XP を使っていると、ディスクがカリカリとうるさいな …

no image
VNCで日本語入力@CentOS5

CentOSでvncserverを起動した場合、デフォルトでは日本語が入力できま …

no image
GRUBのコマンドラインで、手動でLinuxを起動する@CentOS 5.4

前回の記事で、USBのハードディスクにLinuxを入れたまではいいが、Windo …

no image
gmailでフィルタリング転送した時メールは受信トレイに残るの?

gmailの基本転送機能は全てのメールをあるアドレスに転送しますが、フィルタを用 …

no image
Raspberry Pi2でHDMIからmp3の音を出す@Ubuntu 14.04

Raspberry Pi2 にUbuntuをインストールして、コマンドラインから …

no image
PostgreSQL 9.0 レプリケーション機能を使ってみる @ RHEL5 x86_64

PostgreSQL 9.0 がリリースされましね。早速目玉機能の一つである、レ …

no image
パスワードの有効期限と、アカウント有効期限@RHEL5

パスワードのデフォルト有効期限は “/etc/login.defs& …

no image
Git 最低限の設定@CentOS 5

分散型バージョン管理システムgit をCentOS 5上で使ってみた。 まずCe …

no image
ログファイル監視 + イベントスクリプト@ruby

ログファイルを監視して、ある文字列が出力されたらイベントを発生させたかったので、 …

no image
Trackpointでスクロールできない@ThinkPad キーボード 55Y9024 with Windows7 64bit

ThinkPadのトラックポイントキーボード 55Y9024 を使っているのです …