Git for Windowsをコマンドラインからインストールする方法
概要
今回はWindowsのコマンドラインでGit for Windows (Git Bash) をインストールする方法を紹介します。
Git for WindowsはWindows上でGitやBashを使用する場合にインストールしておくと何かと役に立つパッケージですが、
GUI経由でのインストールは必要オプションの取捨選択が必要であったり、なによりインストール状態の再現性に乏しいところがあります。
コマンドライン経由のインストール方法を確立することで、再現性があり開発環境インフラ構築などにも応用させることができますためよかったらご活用ください!
動作環境
- Windows 10
- 筆者はPro版ですが、Homeでも問題ないと思います
注意事項
- 以下を試す場合は自己責任でお願いします!
- 以下の処理は管理者権限で実行しますが、当方は事故や故障などの一切の責任を負いません!
上記の件、ご留意ください
変更履歴
- 2022/05/17
- 「2022/05/16 23:00以前のExampleを試した場合は以下を実施をお願いします」を追加
- 「(任意)PATHの追加」に注意文を追記
- 2023/02/05
- 「install-git.ps1 を実行」を
PowerShell -ExecutionPolicy Bypass
を使ったコマンドに修正
- 「install-git.ps1 を実行」を
2022/05/16 23:00以前のExampleを試した方は以下を実施を推奨
環境変数の設定に使用していたコマンド ([Environment]::SetEnvironmentVariable
) に少し難点がありました。
WindowsInfrastructureExample
上のスクリプトは修正済みです。
もし、すでに試していてパスが通らなくなったり、コマンドが実行できなくなった方は以下の「余談、PATHのREG_SZ登録をREG_EXPAND_SZに切り替える方法」を試してみてください。
余談、PATHのREG_SZ登録をREG_EXPAND_SZに切り替える方法
詳細も上記記事に記載しています。
インストール方法
インストールオプションについて
- 以下のコマンドでのGit for Windowsのインストールオプションは筆者が普段使用しているオプションを使用
- 詳細は後述しますが、各自で
git-for-windows.inf
都合の良いように改変してください
- 詳細は後述しますが、各自で
Gitからps1ファイルをクローン
- ps1ファイル(PowerShellスクリプト)を以下のリポジトリからクローンする
PowerShellを管理者権限で開く
※開き方は好きなやり方で問題ありません
今回はWindows 10標準搭載のPowerShellを使用
Windows
キーを押して、「powershell」を検索- 「管理者として実行する」をクリック
PowerShellでクローンしたWindowsInfrastructureExample上に移動
> cd <path>\WindowsInfrastructureExample
Git-2.x.x-64-bit.exe を配置
コマンドでダウンロードする場合
> Invoke-WebRequest https://github.com/git-for-windows/git/releases/download/v2.36.1.windows.1/Git-2.36.1-64-bit.exe -OutFile Git-2.36.1-64-bit.exe
※インフラ構築のスクリプトを書く場合は、このコマンド自体をps1スクリプトに組み込んでも良い
ブラウザでダウンロードする場合
以下より Git-2.x.x-64-bit.exe
をダウンロードし、WindowsInfrastructureExample
フォルダ以下に配置
install-git.ps1 を実行
> PowerShell -ExecutionPolicy Bypass .\install-git.ps1
エラーログが出なければ問題なく Git for Windowsのインストール完了
インストールの確認 (コマンドラインの場合)
Dir 'C:\Program Files\Git\cmd\git.exe'
でエラーが出なければインストール完了
> Dir 'C:\Program Files\Git\bin\git.exe' ディレクトリ: C:\Program Files\Git\bin Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/05/09 13:28 45584 git.exe
(任意)PATHの追加
(追記)ローカルPCの環境変数 PATH が変更されます!ご注意ください!
> .\set-git-path.ps1
以上でインストール及び設定は完了です。
スクリプト解説
InnoSetup
Git for WindowsはInnoSetupというフリーのWindows向けインストーラーが使用されています
パラメータの詳細は Setup Command Line Parameters で確認できます
/ALLUSERS
はその通りWindows上の全部のユーザーにインストール/VERYSILENT
はダイアログなどを抑制/Log xxx.log
でログ出力- 標準出力に直接ログを流し込めなかったため、一度ログファイルに落として最後に出力に流しています
/LOADINF
/LOADINF=git-for-windows.inf
オプションファイルの指定で、実質的にGit for Windowsのオプション指定方法になります
- Gitのcommit時の改行に
LF
を指定 (CRLFOption
) - Credential Managerの使用 (
UseCredentialManager
) - コマンドプロンプトでgitを使用可能にするかの指定 (
PathOption
) - etc...
手順で使用したファイルは git-for-windows.inf となります
後述の SAVEINF
からオプションファイルを作成できます。
自分はインストーラーのスクリプト (install.iss) から割り出してました。。。
余談、git-for-windows.inf の方針
- CLI特化
- UNIX系と互換性を意識
- OpenSSHの使用
- LFOnly指定など
- Credential Manager を有効化
- これがあるとGitHubとの連携が楽になります! (別記事でいずれ紹介します!)
- デフォルトブランチ名は
main
(昨今の流れを汲み取って) - git LFS を有効化
/SAVEINF
/LOADINF=git-for-windows_save.inf
※install-git.ps1
では非使用
今回は直接は使用していませんが、指定するとインストール時のオプションを確認可能です!
| Out-Null
コマンドの最後に | Out-Null
を入れることで、インストール完了までコマンド終了待ちになります。
PowerShellだとメジャーなテクニックのようです。
余談、今回の調査で躓いたところ
- PowerShellで変数に実行ファイルを仕込む場合は
& ./$PackageFile
のように記載&
なしで./$PackageFile
とするとエラーになる
Set-ExecutionPolicy
を実行しないと PowerShell上でps1ファイルが実行できない- オプションの探し方
Foo.exe /?
orFoo.exe /HELP
などで確認できる場合があるようです- Windowsのダイアログ出でるのでコピーできないなど面倒。。。
- 別ps1ファイルのfunctionをコールする方法
自分は元々UNIX系のエンジニアだったので、WindowsとPowerShellのコマンドライン化には結構手こずりました。
再現性のあるインフラの構築にはIaC (Infrastructure as Code) は欠かせないのですが、Windowsに慣れていないせいかほとんどPowerShell調査みたいになってしまいました。
雑感
前回の記事投稿から2ヶ月経ってしまいましたね。。。
しかも今回はXRと3DCGから程遠いCLIに関する記事に。
「3DCGとかUnityやる気あるの?」と思われた方もいらっしゃるかもしれませんが、ちゃんと普段は触ってます!
地味なことですが、再現性のある開発環境の構築方法は何かと便利だったりします。
また、Git for Windowsってインストールしておくと、UnityのPackage ManagerでGitHub経由のパッケージが取得しやすくなったり、
GitHubのHTTPS経由での連携が安定したりと、何気に非エンジニアの方にもメリットがあったりします!
さて、次回は「PowerShell7をコマンドラインからインストールする方法」にする予定です!
それでは~