Windows7 SP1
Git BASH (MINGW32(MSYS))
$ git --version
git version 2.28.0.windows.1
ディレクトリジャンクション直下のファイルをgit rm
すると、当該ファイルが削除されるがディレクトリジャンクション自体も削除される件…
(※ディレクトリジャンクション直下のディレクトリ内のファイル削除だとそうはならない…)
再現コード?
コマンドプロンプト(cmd.exe)側の操作
C:\temp\> mkdir hoge
C:\temp\> cd hoge
C:\temp\hoge\> echo foo > foo.txt
C:\temp\hoge\> echo bar > bar.txt
C:\temp\hoge\> echo baz > baz.txt
C:\temp\hoge\> mkdir fuga
C:\temp\hoge\> cd fuga
C:\temp\hoge\fuga\> echo pee > pee.txt
C:\temp\hoge\fuga\> echo poo > poo.txt
C:\temp\hoge\fuga\> cd ..
C:\temp\hoge\> cd ..
C:\temp\> mkdir proj
C:\temp\> cd proj
C:\temp\proj\> mklink /J piyo ..\hoge
Git BASH(MINGW32(MSYS))側の操作
user@host MINGW32 /c/temp/
$ cd proj
user@host MINGW32 /c/temp/proj/
$ git init
user@host MINGW32 /c/temp/proj/ (master)
$ git config --add user.name "user"
user@host MINGW32 /c/temp/proj/ (master)
$ git config --add user.email "user@host"
user@host MINGW32 /c/temp/proj/ (master)
$ git add .
user@host MINGW32 /c/temp/proj/ (master)
$ git commit -m "initial commit"
user@host MINGW32 /c/temp/proj/ (master)
$ git rm piyo/bar.txt
user@host MINGW32 /c/temp/proj/ (master)
$ git status
これはディレクトリジャンクションのpiyo
が削除されてることがdir
コマンドなりls
コマンドなりすれば確認できる(参照先のhoge
は残ってるしhoge
内ではbar.txt
だけが削除された状態になっている…)
うろおぼえだけど
たしかWindowsのディレクトリジャンクションについて、ディレクトリジャンクションに未対応のツールやらアプリやらが存在することが多いから使用には注意しろって、どっかに書いてあった気がする(どこで見たか覚えてねえ…MS以外のサイトかもしれん…
Git for WindowsのリポジトリのIssueを軽く眺めてみたけど
それっぽいissueは見当たらないが(つか英語読めん…)
https://github.com/git-for-windows/git/issues?q=is%3Aissue+junction+is%3Aopen
まぁそもそもGit BASH(MINGW32)でディレクトリジャンクション内にcd
コマンドで移動するとパスを辿れないらしく、色々困ったことにはなる