さすがに操作の取り消しは必要か……Git使ってるとは限らないしなあ。
そしてGitを使ってると、入れ替えた後にステージしないと、ファイルの履歴が断たれてしまう。
gitを使ってるときはgit mvでファイルを動かすようにしなきゃいけないな……うわあ面倒だ。
@taiyo 内容が変化していなければ、git rm; git add; git commitでもファイル名の変更を追ってくれはするみたいです
# ファイル名を変更する前の操作
$ echo Hello, World > hello.txt
$ git commit -m 'first commit'
# ファイル名の変更
$ mv hello.txt greeting.txt
$ git rm hello.txt
$ git add greeting.txt
$ git commit -m 'rename file'
[main 078c49c] rename file
1 file changed, 0 insertions(+), 0 deletions(-)
rename hello.txt => greeting.txt (100%)
# ファイル名を変更した後の操作
$ echo Good bye, world >> greeting.txt
$ git commit -m 'Add a greeting'
$ git log --follow --oneline greeting.txt
64dac0d (HEAD -> main) Add a greeting
078c49c rename file
55908df first commit
@zundan ありがとうございます。それが「ステージしないと履歴が断たれてしまう」と書いたことです。
連番の振り直しみたいなことをすると、全部のファイルにこれが発生するので、git mv で行けるところはそうした方がいいだろうなということです。
@taiyo なるほどでした。必要な動作を知らずにお騒がせしてすみません。お騒がせついでに、シンボリックリンクを利用できるなら、内容を持っているファイルの名前は変化させずに、連番へのシンボリックも管理する手もあるかもしれません。
@zundan なるほど、それは面白い。
しかしMacとWindowsとLinuxと仮想環境で動作するプラグインなので、シンボリックリンクはちょっと怖いです。
@taiyo ですよね~。僕はLinuxとmacOSではgitでシンボリックリンクを常用してて問題ないのを確認できてますが、Windowsはわかりません。
@zundan VS Codeって、仮想環境でも起動しちゃうので、ますます怖いところがあります