Yu's Blog
気ままに書いているブログ。
2018年10月27日土曜日
Gitの過去のcommitを編集する
dotfilesをgitlabで管理しています(唐突)。一つ前の記事でvim-texを導入してPushした後、ふと気になってgitlabに行ってみたらなんと過去のいくつかのコミットメッセージが文字化けしていた。いろいろ試した結果、どうもvimのfileencodeingの優先順位がおかしかったらしく、コミットメッセージがShiftJisになっていた。~~おのれWindows~~ そんなわけで過去のコミットを編集する方法を調べたので、備忘録的にまとめる。
## 直近のコミットを修正 - `$git commit --amend` commitした直後に「あ!タイポ!」という私のようなうっかりさんにはピッタリのコマンド。これを叩くだけで直近のコミットが設定したエディタで開く。実質コミットのやり直し的な動作っぽい。ちなみに`$git commit --amend -m "commit message"`とすればコミットメッセージだけを修正できる。 これはatomのgitプラグインにもあったので知ってた。今回初知りだったのは次 ## 2つ以上前のコミットを修正 - `$git rebase -i HEAD~{n}` このコマンドは指定した回数の範囲でコミットを選んでやり直せる。{n}は何回前を含めるかの引数。 例えば`$git log --oneline`としたときに ``` ❯ git log --oneline bf76ec9 vimのファイルエンコードの優先度をutf-8最優先に修正 8a317f6 .latexmkrcの追加に伴ってシンボリックリンク作成スクリプトを変更 41f9fad latexmkB%3%^%s%I$N@_Dj%U%!%$%k$rDI2C 8c65680 plantumlのbrew版への切り替えのため、実行ファイルを削除 ``` みたいなことになっていたとする(というかなってた)。この場合はまず ``` $ git rebasen -i HEAD~3 ``` とするとエディタが開いてこんな文章がでる。 ``` pick 41f9fad latexmk^[$B%3%^%s%I$N@_Dj%U%!%$%k$rDI2C^[(B pick 8a317f6 .latexmkrcの追加に伴ってシンボリックリンク作成スクリプトを変更 pick bf76ec9 vimのファイルエンコードの優先度をutf-8最優先に修正 # Rebase 8c65680..bf76ec9 onto 8c65680 (3 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # d, drop = remove commit # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out ``` ここで編集したいコミットの左の`pick`を下の一覧から選んで編集、保存して終了する。今回は`41f9fad`をrewordにした。すると、コミットメッセージを修正するエディタが開くので修正。あとはrebaseなので一度pullしてからpushすればOK。 > 参考 Gitコミットメッセージの修正方法 - Qiita
https://qiita.com/m03_89er/items/6a274423f8987456aee2 ## おわり もうすこし注意してcommitするようにしたいですね。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿