☄️

シンボリックリンクの使い方

2020/09/27に公開

実施環境

  • 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

シンボリックリンクを作成する

  1. 管理者権限でコマンドプロンプトを起動
  2. 以下のコマンドを入力
mklink /d (作成するシンボリックリンク名) (リンク先のパス)

シンボリックリンクを作成権限を管理者以外に割り当てる

管理者権限でコマンドプロンプトを起動する必要がなくなる。

  1. 管理者権限があるアカウントでログイン
  2. コントロールパネルで"管理ツール"を検索 -> ローカル セキュリティ ポリシー
    • 「解析中にエラーが発生しました。」が何度か出る場合、OKで無視
  3. ローカルポリシー -> ユーザ権利の割り当て -> シンボリックリンクの作成 -> ユーザまたはグループの追加 -> [場所]をクリック
  4. 使用中のPC名を選択 -> OK
  5. 詳細設定 -> 検索 -> 割り当てたいアカウントを選択 -> 全部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