【Git】git mv後に履歴が追えない原因と対策

Git
記事内に広告が含まれています。

はじめに

ファイルのリネームや移動をするとき、みなさんは git mv コマンドを使っていますか?

git mv old_file.rb new_file.rb

git mv は、単にリネームや移動するだけでなく、その操作をGitの履歴として残すことができる便利なコマンドです。
とても便利なこのコマンドですが、使い方を少し間違えると履歴をうまく追えなくなることがあります。

履歴が切れてしまうパターン

以下のような操作を一度に済ませたくなることはありませんか?

# 初期ファイルを作成
echo "puts 'Hello'" > old_file.rb
git add .
git commit -m "old_file.rb作成"

# git mvと修正を同時に実行
git mv old_file.rb new_file.rb
echo "puts 'こんにちは'" > new_file.rb
git add .
git commit -m ファイル移動とファイル修正

# この状態で履歴を確認
git log --follow new_file.rb

結果:old_file.rb 時代の履歴が表示されません😢

このように 「移動+修正を同時にコミット」 してしまうと、git log --follow で過去の履歴を正しく追えなくなることがあります。

対策:コミットを分ける

この問題を防ぐには、ファイルの移動と修正を別のコミットに分けることです。

# 初期ファイルを作成
echo "puts 'Hello'" > old_file.rb
git add .
git commit -m "old_file.rb作成"

# git mvを実行
git mv old_file.rb new_file.rb
git add .
git commit -m ファイル移動

# 修正は別コミットで
echo "puts 'こんにちは'" > new_file.rb
git add .
git commit -m ファイル修正

# この状態で履歴を確認
git log --follow new_file.rb

結果:old_file.rb の履歴までしっかり追えます🎉

まとめ

git mv と修正は、別コミット にするのがベストです。
そうすることで、git log --follow で過去の履歴を正確にたどることができるようになります。

最後までお読みいただきありがとうございました。

皆さんからのコメントやSNSでのシェア、嬉しい投稿をいただくと本当に励みになります。

もしこの記事が気に入ったら感想をコメントやSNSでシェアしていただけると嬉しいです。

皆さんの声を聞かせてくださいね!

Git
tetsuをフォローする
簿記はじめるってよ

コメント

タイトルとURLをコピーしました