スポンサーリンク

このドキュメントの内容は、以下の通りです。

ソースコードマネージメントシステムを利用している人は、ソースコードをコミットした後に、「あ、しまった」と思うことが、多々あるのではないでしょうか。
しようもないタイプミスをしてしまった、という経験があるかと思います。
その結果、コミットしたあとに、タイプミスを修正して、再度、コミットする、といったことをしているでしょう。

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-27-1] [2012-03-26-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 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

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー