☄️
シンボリックリンクの使い方
実施環境
- Windows 10
- git version 2.7.4
シンボリックリンクとは何か
一言で言うと、ショートカットのようなもの
フォルダ階層が下記のとき
repository
├ code
└ project
projectフォルダ配下にcodeへのシンボリックリンクを作成する
repository
├ code
└ project
└ code(シンボリックリンク)
このとき、ショートカットだと repository\project\code
に移動すると repository\code
になってしまうが、
シンボリックリンクだと repository\project\code
にあたかもcodeフォルダがあるようにふるまう
使用例
2種類のビルド方法を扱いたいとき
- 普段はproject配下でビルド
- 単体テストのビルドにはtestフォルダとcodeフォルダを同じ階層に置いておきたい
repository
├ code
├ project
│ └ code(シンボリックリンク)
└ test
シンボリックリンクを作成する
- 管理者権限でコマンドプロンプトを起動
- 以下のコマンドを入力
mklink /d (作成するシンボリックリンク名) (リンク先のパス)
シンボリックリンクを作成権限を管理者以外に割り当てる
管理者権限でコマンドプロンプトを起動する必要がなくなる。
- 管理者権限があるアカウントでログイン
- コントロールパネルで"管理ツール"を検索 -> ローカル セキュリティ ポリシー
- 「解析中にエラーが発生しました。」が何度か出る場合、OKで無視
- ローカルポリシー -> ユーザ権利の割り当て -> シンボリックリンクの作成 -> ユーザまたはグループの追加 -> [場所]をクリック
- 使用中のPC名を選択 -> OK
- 詳細設定 -> 検索 -> 割り当てたいアカウントを選択 -> 全部OK
Gitでシンボリックリンクを扱う
扱えるようにしたいリポジトリ内で下記を実行
git config --global core.symlinks true
確認方法は以下
git config --get core.symlinks
trueと表示されればOK(falseになる場合は下記を実行)
pullしたシンボリックリンクがただのファイルになってしまう場合
gitのconfigファイルはlocal(リポジトリごとの設定)が優先されてしまうため、以下を実行する(localからcore.symlinksの設定を削除)
git config --unset core.symlinks
Discussion