Git commit をやり直しする --amend
スポンサーリンク
このドキュメントの内容は、以下の通りです。
ソースコードマネージメントシステムを利用している人は、ソースコードをコミットした後に、「あ、しまった」と思うことが、多々あるのではないでしょうか。しようもないタイプミスをしてしまった、という経験があるかと思います。
その結果、コミットしたあとに、タイプミスを修正して、再度、コミットする、といったことをしているでしょう。
Git では commit した後で、間違いに気づいたときに、直前のコミットを簡単にやりなおすことができます。
簡単に流れを紹介すると、以下のとおりです。
- git commit -a
- あ、タイプミス発見。
- 修正
- git commit -a --amend
リポジトリの用意
まずは、今回のデモ用の作業用のリポジトリを用意します。
薫 $ mkdir demo 薫 $ cd demo 薫 $ git init 薫 $ ls -a ./ ../ .git/
ソースコードの準備
ソースコードを1つ用意します。
ここでは、 stdio.h をあえて、忘れた、という設定です。
薫 $ > main.c int main (int argc, char *argv[]) { puts ("Hello"); return (0); }
ファイルは、ちゃんとできてますね。
薫 $ ls main.c 薫 $ cat main.c int main (int argc, char *argv[]) { puts ("Hello"); return (0); }
まずはコミットする
ここで、ソースコードを git のリポジトリに追加します。
薫 $ git add main.c 薫 $ git commit -m '* Initial commit' [master (root-commit) 4afe4d0] * Initial commit 1 file changed, 6 insertions(+) create mode 100644 main.c
コミットできました。
ソースコードの修正
さて、main.c に stdio.h を include し忘れていることに気づいてしまいました。
まずは、 ed で main.c を修正し、 include を追加します。
薫 $ ed main.c 68 1 int i #include <stdio.h> ^C ? w 87 q 薫 $ cat main.c #include <stdio.h> int main (int argc, char *argv[]) { puts ("Hello"); return (0); }
ソースコードの修正は終わりました。
コミットのやり直し
さて、コミットをここでします。
ここで git commit -a としてしまうと、やり直しにはなりません。
commit のオプションとして、 --amend を指定することで、元のコミットを取り消して、新たにコミットします。
ただし、直前のコミットが記録してなくなるわけではありません。
薫 $ git commit --amend -a -m '* Initial commit' [master 7514217] * Initial commit 1 file changed, 7 insertions(+) create mode 100644 main.c
コミットログの確認
amend を使って commit をやり直しました。
さて、ここで、コミットログを確認してみましょう。
このように1回のコミットでコミットしたように見えます。
薫 $ git log -p commit 75142173486f1ebce2e135439609175bb690ca9c Author: foo <foo@gmail.com> Date: Thu May 3 23:41:12 2012 +0900 * Initial commit diff --git a/main.c b/main.c new file mode 100644 index 0000000..553aa14 --- /dev/null +++ b/main.c @@ -0,0 +1,7 @@ +#include <stdio.h> +int +main (int argc, char *argv[]) +{ + puts ("Hello"); + return (0); +}
合わせて読む
- [2012-03-20-1] Git を FreeBSD にインストールする
- [2012-03-21-1] Git 最初にやっておくべき便利な設定
- [2012-03-22-1] はじめてのGit入門
- [2012-03-23-1] Git ブランチを作成する
- [2012-03-24-1] FreeBSD で GitWeb を動かしてみる
参照しているページ (サイト内): [2012-03-27-1] [2012-03-26-1]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12