0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

ファイルのリネームや移動をするとき、みなさんは 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 で過去の履歴を正確にたどることができるようになります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?