【Git】git mvコマンドを初心者向けにわかりやすく解説!ファイル移動とリネームの基礎を押さえよう

Web開発

はじめに

Gitを使って開発を進める中で、ファイル名の変更やディレクトリの移動が必要になることは少なくありません。 その際に役立つのが git mvコマンド です。

このコマンドを使うと、単にファイルを移動するだけでなく、Git上で移動やリネームを正しく認識させることができます。 もしOSの標準コマンド(例:Windowsならrenamemove、MacやLinuxならmv)だけでファイルを移動してしまうと、変更が正しく追跡されずに混乱を招くことがあります。

この記事では、Git初心者の方を対象に git mvコマンド の基本から実務での活用シーンまでをまとめました。 具体例を交えながら丁寧に解説していきますので、ぜひ参考にしてみてください。

この記事を読むとわかること

  • git mvコマンド の概要やメリット
  • ファイルやディレクトリを移動・リネームする基本的な手順
  • 実務でありがちな具体例と、その対処法
  • 移動やリネーム時に注意すべきポイント

git mvコマンドとは?

Gitで扱うファイルやディレクトリをリネームしたり、別の場所に移動したりするときに使用するコマンドです。 一般的にGitではファイル移動やリネームを行う際、OSのmvコマンドやエクスプローラーを使って行っても動作自体は可能です。 ただし、その方法だとGitは「ファイルの削除と追加」として認識しやすくなり、ファイルの履歴が分断されるケースがあります。

一方で git mvコマンド を使えば、Gitが「リネーム」や「移動」として認識し、ファイルの履歴情報が保存されます。 これによって変更履歴が整理され、後で作業履歴を振り返るときにも役立ちます。

実務で使われる場面

ソースコードのファイル名が誤解を招く場合や、規則に沿っていない場合に命名規則を整えることがあります。 また、プロジェクトの構成を見直してディレクトリを整理する際にも、git mvコマンド は頻繁に利用されるでしょう。 こうした場面で履歴を保ったまま簡単にファイルやフォルダを動かしたいときは、git mvコマンドが大変便利です。

git mvコマンドを使うメリット

Gitにファイルの変更を正しく認識させることで、履歴管理がシンプルになるのが最大のメリットです。 もう少し具体的に見ていきましょう。

履歴が分断されにくい

Gitは内部的に「ファイルが削除され、新しいファイルとして追加された」形跡を見つけると、自動的に「リネーム」と解釈してくれる場合があります。 しかし、変更の内容が大きい場合や複数人で作業している場合には、その特定がうまくいかず履歴がバラバラになることがあります。 git mvコマンド を使えば、Gitに対して「このファイルは移動(またはリネーム)された」という情報を明確に渡すため、履歴が見やすくなります。

操作の手順がまとまる

OSの標準コマンドによる移動やリネームをすると、その後に git addgit rm などで変更を反映させる手順を別途踏む必要があります。 一方で git mvコマンド を利用すれば、基本的に1回の操作で変更をGitに伝えられます。 これにより、操作ミスが減り作業がスムーズになるでしょう。

git mvコマンドの基本的な使い方

ファイル名の変更

あるファイルをリネームする場合は、以下のように記述します。

git mv old_name.txt new_name.txt
git commit -m "Rename old_name.txt to new_name.txt"

ここで git mv old_name.txt new_name.txt を実行すると、Gitはファイル名の変更を正しくトラッキングします。 その後、いつもどおりにコミットを行うだけです。 もしOSのエクスプローラーやmvコマンドで名前を変えた場合は、git rm old_name.txtgit add new_name.txt を実行してからコミットする必要があり、少々手間が増えます。

ファイルの移動

ディレクトリの構成を見直して、ファイルを別フォルダへ移動したいときは以下のようにします。

git mv src/utils/config.js src/config.js
git commit -m "Move config.js from utils/ to root config/ directory"

これで src/utils/ にあった config.jssrc/config.js ディレクトリに移動されます。 コミットメッセージには「どこからどこへ移動したのか」を明確に書いておくと、履歴を追いやすくなります。

ディレクトリごとリネームまたは移動

フォルダ構造を大幅に変更する場合、ディレクトリ単位で移動やリネームをすることも可能です。 例えば assets ディレクトリを public に名前変更したい場合は、下記のように実行します。

git mv assets public
git commit -m "Rename assets directory to public"

同様の要領で git mv <旧ディレクトリ> <新ディレクトリ> を実行すれば、任意のディレクトリ移動・リネームが行えます。

実務でありがちな具体例

ここでは、プロジェクトの現場でよくある場面をいくつか取り上げ、git mvコマンド がどのように役立つかを見ていきます。

ファイル名の表記ゆれを統一したい

プロジェクトメンバーが複数人いると、ファイル名の命名規則が一致していないことがあります。 例えば、キャメルケースやスネークケースが混在しているケースです。 後から規則を決め直して統一したいときは git mvコマンド を使ってファイル名を一括で変更し、コミットすれば履歴がキレイに残ります。

ファイル置き場の整理

プロジェクトが大きくなると、src 配下に多数のファイルが乱雑に並ぶことがあるかもしれません。 「各機能ごとにディレクトリを分けたい」とか「モジュール同士の関連性がわかりにくいから整理したい」などのときも、git mvコマンド が便利です。 まとめて移動をかけてからコミットすれば、どのファイルがどこへ動いたのかが履歴に残せます。

コードのリファクタリング時に役立つ

大きなリファクタリングを行うときに、ファイル名だけでなくソースコードの内容も変更することがあります。 このとき、OSのコマンドで単にファイルを動かしてしまうと、リネームの痕跡がGitに正しく記録されない場合があります。 しかし、git mvコマンド を用いてリネーム・移動を先に行い、その後内容を修正すれば、何をどのように変更したかが時系列に沿って分かりやすくなります。

git mvコマンド利用時の注意点

便利な git mvコマンド ですが、使う上で気をつけたい点もいくつかあります。 以下では、初心者がやりがちなミスについて解説します。

変更後のファイル名を間違えた場合

もし間違ったファイル名にリネームしてしまった場合は、再度 git mv <間違った名前> <正しい名前> を実行してコミットすればOKです。 間違えに気づいたら早めに修正すると、混乱を防げます。

コミット前に移動をキャンセルしたい

git mv で指定した移動やリネームは、コミット前であれば取り消すことが可能です。 誤操作に気づいたら git restore --staged <ファイルまたはディレクトリ>git checkout -- <ファイルまたはディレクトリ> などを使って差分を戻しましょう。

同名のファイルがある場合

移動先やリネーム先に既存ファイルが存在すると、上書きしてしまうリスクがあります。 この場合、Gitが警告を出すことがありますが、上書きしたいのか別の場所に置きたいのかを明確にして対応してください。 誤って重要ファイルを失わないように、作業前にはファイルの状況をよく確認しておきましょう。

リネームや移動を行う際は、念のためブランチを切って作業すると安心です。

git mvコマンドとOSのmvコマンドとの違い

実は git mvコマンド は内部的に「OSのmv操作 + Gitへの変更登録」をまとめて行っているようなイメージです。 そのため、OSのmvコマンドでファイルを移動しただけではGitには認識されず、あらためて手動で git rmgit add をする手間が発生します。

OSコマンドを使う場合の手順

たとえば、LinuxやMacで mv old_name.txt new_name.txt を実行した後は、下記のような手順が必要になります。

git rm old_name.txt
git add new_name.txt
git commit -m "Rename old_name.txt to new_name.txt"

このように操作が煩雑になるだけでなく、Gitがうまくリネームを検知できない場合もあります。 履歴を適切に管理したいなら、git mvコマンド を積極的に使うのがよいでしょう。

トラブルシューティング

変更がステージされない

git mv を実行しても、なぜか変更がステージに上がらないことがあります。 この場合、移動元や移動先のパスが正しいか、スペルミスがないかを再度チェックしてください。 また、Gitの設定によっては改行コードの扱いで問題が起きるケースもあるため、パスだけでなくファイルの内容なども合わせて確認するのがいいかもしれません。

大量のファイルを一括で移動したい

大量のファイルを一括で移動する必要がある場合、スクリプトなどでループして複数回 git mv を実行する方法があります。 ただし、一気に動かしすぎると差分が大きくなって管理しづらいこともあるため、段階的に行うのがおすすめです。

大量のファイル構造変更は、プロジェクトメンバーと連携しておかないとコンフリクトが増える原因になります。 チームで協議しながら、タイミングを見計らって作業を行いましょう。

実務でより効率的に運用するためのヒント

ここでは git mvコマンド をさらに活かすためのちょっとした工夫をいくつか紹介します。

コミットメッセージをわかりやすく

リネームや移動が頻繁に発生する現場では、コミットメッセージに「Before → After」を書くようにすると追跡が簡単です。 例えば "Rename user_model to customer_model""Move services/api.js to api/ directory" のように、その変更意図も含めて明記すると履歴を後から確認するときに混乱が減ります。

ブランチを活用する

リファクタリングや大幅なディレクトリ再編など、影響の大きい変更は必ず別ブランチで作業するのがおすすめです。 そうすれば、何か問題が起きても簡単に切り戻せますし、プルリクエストなどを通じてメンバーに変更内容をレビューしてもらいやすくなります。

他のコマンドと組み合わせる

作業フローの中で git statusgit diff を適宜活用して、差分が想定通りに反映されているかを確認すると安心です。 ファイルを移動したあとの差分が「ファイルが消えて新たに追加された」と見なされていないかをチェックしてみてください。

まとめ

git mvコマンド は、ファイルやディレクトリの移動・リネームをGitに正しく認識させるために欠かせないコマンドです。 これを活用すると履歴管理がすっきりし、後々のトラブルも減るでしょう。

  • 変更を1回の操作でまとめてできる
  • 履歴が分断されにくくなる
  • 実務でもファイル整理やリファクタリングで大いに役立つ

もし、今までOSの標準コマンドを使っていた方がいたら、ぜひ git mvコマンド を取り入れてみてください。 プロジェクトを整理しやすくなり、チームとの共同作業もスムーズになるはずです。

Gitをマスターしよう

この記事で学んだGitの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。