😥

Windowsでシンボリックリンクを作成する際に間違って絶対パスで作成してプッシュして、ローカル情報を漏洩しないようにする

に公開

Windows 11端末であるリポジトリでシンボリックリンクを作成しコミットしようとしたところ、シンボリックリンクの内容がC:\Users\xxxxx\Documents\your\projects\directory\srcの様に絶対パスで作成されてしまい、少しハマったので相対パスで作成する方法について備忘録を残しておきます。

(Mac使った方が良いんですかね......)

絶対パスでシンボリックリンクが作成されてしまう方法 - 1

PowerShellのNew-Itemを使う方法はダメでした。

New-Item -ItemType SymbolicLink -Path src\content -Target ..\..\content

実体は..\..\contentにあり、上記コマンドでsrc\contentにシンボリックリンクを作成することができますが、この方法だと絶対パスになってしまいます。

PowerShellのNew-Itemは内部的にWindows API(CreateSymbolicLink)を使っており、相対パスであってもリンク作成時に絶対パスへ自動変換されるようです。

絶対パスでシンボリックリンクが作成されてしまう方法 - 2

Git Bashを使う方法もダメでした。

ln -s ../../content content

相対パスでシンボリックリンクを作成する方法

Windowsのcmd.exemklinkを使う方法なら大丈夫でした。
※管理者権限

mklink /D content ..\..\content

成功すると下記の応答があります。

symbolic link created for content <<===>> ..\..\content

OS毎の地雷って面倒ですね......という学びでした。

Discussion