実際には、単一の実行可能ファイルを git bin フォルダーからパスに追加するには、それらをパス変数に含まれるフォルダーにシンボリック リンクします。
また、powershell 内でいくつかの git ツールを使用したかったのですが、ツールの 1 つを使用するたびに git-bin-folder をパスにロードしたくありませんでしたcp
。find
などls
...
- パスに追加できるフォルダーを作成します。私は自分のものを作成
C:\dev\bin
し、パス変数に追加しました。
- 次に、すべての dll ファイルを git bin フォルダーから新しい bin フォルダーにシンボリック リンクする必要があります。これは、リンクするツールが同じディレクトリにある必要があるためです (実行パスは git-bin-dir ではなく、新しい bin -dir)。そのためのスクリプトを以下に追加します。
- 最後に、PowerShell で使用するすべてのツールのシンボリック リンクを作成する必要があります (ヒント: ssh.exe は PowerShell で使用するのに非常に適しています ;))
以下は、git のすべての優れたツールを使用して新しい bin フォルダーをセットアップするのに役立つ、私の powershell 関数です。
# generic symlink function
function Create-Symlink {
param(
[string]$link,
[string]$target
)
& cmd.exe /c mklink "$link" "$target"
}
# symlink all teh git dlls
function Create-GitDllSymlinks {
param(
[string]$newBinDir='C:\dev\bin',
[string]$gitBinDir='C:\Program Files (x86)\Git\bin'
)
$dlls = gci $gitBinDir -Filter *.dll
$dlls | foreach {
Create-Symlink -link (join-path $newBinDir $_.Name) -target $_.FullName
}
}
# to easily link your git tools
function Create-GitSymlink {
param(
[string]$executable,
[string]$newBinDir='C:\dev\bin',
[string]$gitBinDir='C:\Program Files (x86)\Git\bin'
)
if (-not $executable.EndsWith('.exe')) {
$executable = ($executable + '.exe')
}
Create-Symlink -link (join-path $newBinDir $executable) -target (join-path $gitBinDir $executable)
}
# create all dll symlinks needed
Create-GitDllSymlinks
# link ssh and ssh-keygen to use in powershell
Create-GitSymlink -executable ssh-keygen
Create-GitSymlink -executable ssh
もう1つの良いことはこれです:
編集:
数日前に (Win 10 で) コンピューターを再インストールしたところ、上記のソリューションでいくつかの問題が発生しました。どうやら、git および/または git の cygwin 環境が更新され、cygwin アプリケーションが unix-environment-paths を別の方法で検索するようになりました。
たとえば、ssh
常にホーム パスが見つからないと言われました。
Could not create directory '/home/myuser/.ssh'.
The authenticity of host 'hostx (IP)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxx.
Are you sure you want to continue connecting (yes/no)?
を使用すると、とprocmon
でファイルを探していることがわかりました。HOME や USERPROFILE などの環境変数を設定してもうまくいかなかったので、cygwin ツールを満たすために 2 つの追加のシンボリック リンクを作成しました。c:\etc
c:\home\myuser
PS bin # cmd /c mklink /D C:\etc "C:\Program Files\Git\etc"
symbolic link created for C:\etc <<===>> C:\Program Files\Git\etc
PS bin # cmd /c mklink /D C:\home "C:\Users"
symbolic link created for C:\home <<===>> C:\Users