Gitを使った分散開発管理11 – ファイルのmvとrm

2011.08.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ファイル名変更と移動

プロジェクトを進めるうち、ファイルの名前を変えたくなったり、場所を移動したくなることもあります。
そんなときは次の方法でファイル名の変更や移動をしましょう。

$ git mv <元ファイル名> <新しいファイル名>

git mvコマンドを実行すれば、ファイルの移動やファイル名変更が可能です。
これはgit rmでファイルを消してgit addした動作と同じ意味になります。
では、hello.htmlの名前を変更してみましょう。

$ git mv hello.html top.html
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	renamed:    hello.html -> top.html
#

git mvを行うと、ステージングされた状態になります。ではコミットしましょう。

$ git commit -m "rename hello.html"
[master 71f6bd6] rename hello.html
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename hello.html => top.html (100%)

これでhello.htmlはtop.htmlとしてコミットされました。
top.htmlについて履歴を確認してみましょう。

$ git log top.html 
commit 71f6bd649dac2b536c2554034378ba8a3b8e084b
Author: syuta <nakamura.shuta@gmail.com>
Date:   Tue Aug 30 16:50:55 2011 +0900

    rename hello.html

普通にgit logとするだけでは、リネーム時のコミットログしかでてきません。
リネーム前の履歴も見たければ、--followオプションを付けます。

$ git log --follow top.html
commit 71f6bd649dac2b536c2554034378ba8a3b8e084b
Author: syuta <nakamura.shuta@gmail.com>
Date:   Tue Aug 30 16:50:55 2011 +0900

    rename hello.html

commit 7ae78778c7ea7d15df4ba7587d225b77f7b4cfa1
Author: syuta <nakamura.shuta@gmail.com>
Date:   Mon Aug 22 21:18:32 2011 +0900
・・・・・・・・・・

ちなみに、git mv時に-n(--dry-run)オプションを付けて実行すると、どうなるのかを表示するだけで、実際に移動・リネームは行いません。

ファイルの削除

ファイルを削除するには、git rmを使用します。これは以前にもindexからファイルを削除するのに使用したことがあります。

$ git rm --cached <filename>

--cachedオプションを使用すれば、作業ツリーからファイルは削除せず、indexからファイルを削除します。addを取り消したい時に使用します。
通常の削除は、そのまま

$ git rm <ファイル名>

とします。削除情報がindexに登録されます。ワイルドカードを使用し、まとめてrmすることも可能です。
また、ディレクトリを再帰的に削除したい場合は-rオプションをつけてgit rmしてください。
git rm時でも-nオプションを使用すれば、実際にはrmせずにどのファイルがrmされるか確認することができます。

まとめ

今回はファイル名変更、移動、削除について解説しました。
次回はGitのリモート環境について解説する予定です。