無料のバージョン管理ソフト Git で、リモートリポジトリのシンボリックリンクを Windows でチェックアウトしてただのファイルとして作成された場合の対処例を紹介します。
リモートリポジトリのブランチの管理している項目がシンボリックリンクであることの確認、ローカルリポジトリでシンボリックリンクを扱う設定も紹介します。

※Git-2.49.0 (64 bit) を使用します。
リポジトリからチェックアウトしたシンボリックリンクがファイルになる現象
すでにファイルとしてチェックアウトした Gut ファイルをシンボリックリンクとしてチェックアウトします。
gut シンボリックリンクを作成して、コミット、リモートリポジトリへプッシュした元になった作業ディレクトリの gut は当然、シンボリックリンク (SYMLINKD) として表示され、シンボリックリンクであることを確認しました。

G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib\addons のディレクトリ
2025/07/27 13:48 <DIR> .
2025/07/27 13:48 <DIR> ..
2025/07/27 12:19 <DIR> godot-git-plugin
2025/07/27 13:48 <SYMLINKD> gut [..\third_party\Gut\addons\gut]
2025/04/15 19:22 <DIR> my
0 個のファイル 0 バイト
5 個のディレクトリ 2,424,003,813,376 バイトの空き領域
G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib\addons>
プッシュ先のリモートリポジトリの main ブランチの gut 項目のオブジェクトのモードを git ls-tree コマンドで、確認すると 120000 (シンボリックリンク)として管理されていることが確認できました。

G:\Dev\remotes\godot\SakuraCrowdGodotLib>git branch
main
G:\Dev\remotes\godot\SakuraCrowdGodotLib>git ls-tree -l main addons/gut
120000 blob 2fa91c542cc8ade125bcf981bad14b132266dd13 29 addons/gut
Lists the contents of a given tree object, like what “/bin/ls -a” does in the current working directory.
現在の作業ディレクトリでの「/bin/ls -a」の動作と同様に、指定されたツリー オブジェクトの内容を一覧表示します。
-l
–long
Show object size of blob (file) entries.BLOB (ファイル) エントリのオブジェクト サイズを表示します。
When the -l option is used, format changes to
%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)
Git – git-ls-tree Documentation と Google 翻訳
オブジェクトのモードは unix モードからとられていて、 120000 はシンボリックリンクを指します。
In this case, you’re specifying a mode of
100644
, which means it’s a normal file. Other options are100755
, which means it’s an executable file; and120000
, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).この場合、モード 100644 を指定しています。これは、通常のファイルであることを意味します。他のオプションは 100755 で、これは実行可能ファイルであることを意味します。 120000 はシンボリック リンクを指定します。このモードは通常の UNIX モードから取られていますが、柔軟性ははるかに低くなります —これら 3 つのモードは、Git のファイル (BLOB) に対して有効な唯一のモードです (ただし、ディレクトリやサブモジュールには他のモードが使用されます)。
Git – Git Objects と Google 翻訳
リモートリポジトリから管理者権限を持たない TortoiseGit でクローン・チェックアウトした gut は、シンボリックリンクではなくファイルとして作成されてしまいました。

G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons のディレクトリ
2025/08/04 19:22 <DIR> .
2025/08/04 19:22 <DIR> ..
2025/08/04 19:22 29 gut
1 個のファイル 29 バイト
2 個のディレクトリ 2,424,003,813,376 バイトの空き領域
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>
管理者権限で取得
Windows 10 では管理者権限がないとシンボリックリンクを作成できません。
また、試した結果、 git config core.symlinks が true に設定されていない場合に、管理者権限でチェックアウトしてもシンボリックリンクはファイルとして作成されてしまいました。
mklinkでシンボリックリンクを作るのには管理者権限が必要なことです。
windows10でmklinkが見つからないのは、コマンドプロンプト内蔵コマンドだからです | IT業務で使えるプログラミングテクニック
このことから、以下のようにしてシンボリックリンクをチェックアウトします。
- 管理者権限でコマンドプロンプトを起動して、作業ディレクトリに移動
- git config で core.symlinks を true に設定
- git checkout でシンボリックリンクを作業ディレクトリに展開
以下は、そのコマンドの実行の流れです。
各コマンドの実行を小さな章に分けて説明します。

G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons のディレクトリ
2025/08/04 19:22 <DIR> .
2025/08/04 19:22 <DIR> ..
2025/08/04 19:22 29 gut
1 個のファイル 29 バイト
2 個のディレクトリ 2,424,003,764,224 バイトの空き領域
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>git config core.symlinks
false
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>git config --local core.symlinks true
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>git config core.symlinks
true
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>cd ..
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib>git checkout --force remotes/origin/main -- addons/gut
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib>cd addons
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons のディレクトリ
2025/08/06 12:17 <DIR> .
2025/08/06 12:17 <DIR> ..
2025/08/06 12:17 <SYMLINKD> gut [..\third_party\Gut\addons\gut]
0 個のファイル 0 バイト
3 個のディレクトリ 2,424,003,764,224 バイトの空き領域
管理者権限でコマンドプロンプトを起動して移動
管理者権限でコマンドプロンプトを実行して、シンボリックリンクのあるフォルダに cd コマンドで移動します。
※ドライブが異なる場合は cd /d フォルダパス(例 cd /d G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons) を実行します。

管理者権限なし + core.symlinks = falseではシンボリックリンクがチェックアウトできない
dir コマンドを実行すると、gut がシンボリックリンクではなくファイルとしてチェックアウトされていました。
管理者権限なし+ core.symlinks = false でチェックアウトした gut は dir で確認するとサイズの同じただのファイルでした。
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons のディレクトリ
2025/08/04 19:22 <DIR> .
2025/08/04 19:22 <DIR> ..
2025/08/04 19:22 29 gut
1 個のファイル 29 バイト
2 個のディレクトリ 2,424,003,764,224 バイトの空き領域
これは、Windows では、 core.symlinks が true でない場合は、管理者権限で checkout してもファイルとして作成されて、シンボリックリンクとしては作成できないことが原因だと思います。
クローン後の全体のチェックアウトの時点で、管理者権限+ git config –local core.symlinks true をしてからクローンを作成していれば、最初からリモートリポジトリと同じシンボリックリンクとして作成されていたかもしれません。
core.symlinks = true にする
管理者権限があっても、 core.symlinks = false の場合は、チェックアウトしたシンボリックリンクはファイルとして作成されました。
以下は、カレントディレクトリのリポジトリの core.symlinks 設定の確認コマンドを実行した結果です。
例では false と表示され、 core.symlinks が無効であることがわかりました。
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>git config core.symlinks
false
git config core.symlinks で現在の設定を確認して false の場合は、 git config –local core.symlinks true で true に設定を変更します。
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>git config --local core.symlinks true
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>git config core.symlinks
true
You can query/set/replace/unset options with this command. The name is actually the section and the key separated by a dot, and the value will be escaped.
このコマンドを使用して、オプションを照会/設定/置換/設定解除できます。名前は実際にはドットで区切られたセクションとキーであり、値はエスケープされます。
When writing, the new value is written to the repository local configuration file by default, and options
--system
,--global
,--worktree
,--file
<filename> can be used to tell the command to write to that location (you can say--local
but that is the default).書き込み時には、デフォルトで新しい値がリポジトリのローカル構成ファイルに書き込まれ、オプション –system、–global、–worktree、–file を使用して、その場所に書き込むようにコマンドに指示できます (–local と指定することもできますが、これがデフォルトです)。
Git – git-config Documentation と Google 翻訳
管理者権限あり + core.symlinks = trueでシンボリックリンクとしてチェックアウト
–force オプションで同名のファイルをシンボリックリンクとして上書きしました。
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib>git checkout --force remotes/origin/main -- addons/gut
Updates files in the working tree to match the version in the index or the specified tree. If no pathspec was given,
git
checkout
will also updateHEAD
to set the specified branch as the current branch.作業ツリー内のファイルを更新して、インデックスまたは指定されたツリー内のバージョンと一致させます。 pathspec が指定されていない場合、git checkout は HEAD も更新して、指定されたブランチを現在のブランチとして設定します。
When switching branches, proceed even if the index or the working tree differs from
HEAD
, and even if there are untracked files in the way. This is used to throw away local changes and any untracked files or directories that are in the way.When checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored.
ブランチを切り替えるときは、インデックスまたは作業ツリーが HEAD と異なる場合や、途中に追跡されていないファイルがある場合でも続行します。これは、ローカルの変更と、邪魔になっている追跡されていないファイルやディレクトリを破棄するために使用されます。
インデックスからパスをチェックアウトするときは、マージされていないエントリを必ずチェックしてください。代わりに、マージされていないエントリは無視されます。
Git – git-checkout Documentation と Google 翻訳
管理者権限あり+core.symlinks = true で git checkout を行うと、ファイルではなく、リモートリポジトリと同じシンボリックリンクとして gut 項目をチェックアウトできました。
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\tmp\SakuraCrowdGodotLib\addons のディレクトリ
2025/08/06 12:17 <DIR> .
2025/08/06 12:17 <DIR> ..
2025/08/06 12:17 <SYMLINKD> gut [..\third_party\Gut\addons\gut]
0 個のファイル 0 バイト
3 個のディレクトリ 2,424,003,764,224 バイトの空き領域
まとめ
今回は、無料のバージョン管理ソフト Git で、リモートリポジトリのシンボリックリンクを Windows でチェックアウトしてただのファイルとして作成された場合の対処例を紹介しました。
リモートリポジトリのブランチの管理している項目がシンボリックリンクであることの確認、ローカルリポジトリでシンボリックリンクを扱う設定も紹介しました。
参照サイト Thank You!
- Git
- Git – git-config Documentation
- Git – git-checkout Documentation
- windows10でmklinkが見つからないのは、コマンドプロンプト内蔵コマンドだからです | IT業務で使えるプログラミングテクニック
記事一覧 → Compota-Soft-Press
コメント