Linux 用 Windows サブシステムで Git の使用を開始する

Git は、最も一般的に使用されるバージョン管理システムです。 Git を使用すると、ファイルに加えた変更を追跡できるため、実行された内容の記録が得られ、必要に応じて以前のバージョンのファイルに戻すことができます。 また、Git を使用するとコラボレーションが容易になり、複数の人が加えた変更をすべて 1 つのソースにマージできます。

Git は Windows と WSL にインストールできます。

重要な考慮事項: WSL を有効にして Linux ディストリビューションをインストールすると、マシン上の Windows NTFS C:\ から分離された、新しいファイル システムがインストールされます。 Linux では、ドライブに文字が指定されていません。 マウント ポイントが指定されます。 ファイル システムのルート / は、ルート パーティション (WSL の場合はフォルダー) のマウント ポイントです。 / の下にあるすべてが同じドライブであるとは限りません。 たとえば、私のノート PC には、2 つのバージョンの Ubuntu (20.04 と 18.04) と Debian がインストールされています。 これらのディストリビューションを開き、コマンド cd ~ を使用してホーム ディレクトリを選択してからコマンド explorer.exe . を入力すると、Windows エクスプローラーが開き、そのディストリビューションのディレクトリ パスが表示されます。

Linux ディストリビューション ホーム フォルダーにアクセスするための Windows パス
Ubuntu 20.04 \\wsl$\Ubuntu-20.04\home\username
Ubuntu 18.04 \\wsl$\Ubuntu-18.04\home\username
Debian \\wsl$\Debian\home\username
Windows PowerShell C:\Users\username

ヒント

C:\Users\username ではなく、WSL ディストリビューションのコマンド ラインから Windows のファイル ディレクトリにアクセスしようとしている場合、そのディレクトリには /mnt/c/Users/username を使用してアクセスされます。Linux ディストリビューションでは、Windows のファイル システムをマウントされたドライブと見なすためです。

使用する予定の各ファイル システムに Git をインストールする必要があります。

Showing Git versions by distro

Installing Git (Git のインストール) (Git のインストール)

Git は、ほとんどの Linux 用 Windows サブシステムのディストリビューションと一緒に既にインストールされていますが、最新バージョンに更新したほうがよい場合があります。 また、git 構成ファイルを設定する必要もあります。

Git をインストールするには、Linux 用の Git ダウンロード サイトを参照してください。 各 Linux ディストリビューションには、独自のパッケージ マネージャーとインストール コマンドがあります。

Ubuntu と Debian の最新の安定した Git バージョンについては、次のコマンドを入力します。

sudo apt-get install git

Note

まだインストールしていない場合は、Windows 用の Git をインストールすることもお勧めします。

Git 構成ファイルのセットアップ

Git 構成ファイルをセットアップするには、使用中のディストリビューションのコマンド ラインを開き、こちらのコマンドで名前を設定します ("Your Name" を任意のユーザー名に置き換えます)。

git config --global user.name "Your Name"

こちらのコマンドでメールを設定します ("youremail@domain.com" を任意のメールに置き換えます)。

git config --global user.email "youremail@domain.com"

ヒント

まだ Git アカウントをお持ちでない場合は、GitHub でサインアップすることができます。 以前に Git を使用したことがない場合、入門用の GitHub ガイドが役に立ちます。 git 構成を編集する必要がある場合は、nanoのような組み込みのテキスト エディターを使用して行うことができます (nano ~/.gitconfig)。

2 要素認証 (2FA) を使用してアカウントをセキュリティで保護することをお勧めします。

Git Credential Manager のセットアップ

Git Credential Manager (GCM) は、.NET 上に構築されたセキュリティで保護された Git 資格情報ヘルパーであり、WSL1 と WSL2 の両方で使用できます。 これにより、GitHub リポジトリ、Azure DevOps、Azure DevOps Server、Bitbucket に対する多要素認証のサポートが可能になります。

GCM は GitHub などのサービスの認証フローに統合され、ユーザーがホスティング プロバイダーに対して認証されると、新しい認証トークンが要求されます。 その後、そのトークンは Windows 資格情報マネージャーに安全に格納されます。 2 回目以降は、Git を使用してホスティング プロバイダーと通信することができます。再認証は必要ありません。 Windows 資格情報マネージャーにあるトークンへのアクセスだけが行われることになります。

WSL で GCM を使用するには、Windows 10 バージョン 1903 以降である必要があります。 これは、WSL ディストリビューションで Git と相互運用するために GCM が使用する必要な wsl.exe ツールを含む Windows の最初のバージョンです。

WSL と Windows ホストの間で資格情報と設定を共有するために、最新の Git for Windows をインストールすることをおすすめします。 Git Credential Manager は Git for Windows に含まれており、最新バージョンは Windows 用の新しい Git リリースごとに含まれています。 インストール中に、GCM が既定として設定された資格情報ヘルパーを選択するように求められます。

Git for Windows をインストールしない理由がある場合は、Linux アプリケーションとして WSL ディストリビューションに直接インストールできますが、その場合は GCM が Linux アプリケーションとして実行されており、ホスト Windows オペレーティング システムの認証または資格情報ストレージ機能を利用できないことに注意してください。 Git for Windows を使用せずに WSL を構成する方法については、GCM リポジトリを参照してください。

WSL ディストリビューションで使用するように GCM をセットアップするには、ディストリビューションを開き、こちらのコマンドを入力します:

インストールされている GIT が >= v2.39.0 の場合

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

またはインストールされている GIT が >= v2.36.1 の場合

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

またはバージョンが < v2.36.1 の場合は、次のコマンドを入力します:

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"

Note

WSL Git インストールの資格情報ヘルパーとして GCM を使用することは、WSL Git で設定された構成が GCM によって尊重されないことを意味します (既定)。 これは、GCM が Windows アプリケーションとして実行されているため、Git for Windows インストールを使用して構成のクエリを実行するためです。 つまり、GCM のプロキシ設定などは、異なるファイル (%USERPROFILE%\.gitconfig\\wsl$\distro\home\$USER\.gitconfig) に格納されるため、Git for Windows と WSL Git で設定する必要があります。 GCM が WSL Git 構成を使用するように WSL を構成できますが、これは、プロキシ設定が特定の WSL インストールに固有であり、他のユーザーや Windows ホストと共有されないことを意味します。

SSH を使用した Git

Git Credential Manager は HTTP(S) リモートでのみ機能します。 Git は SSH で引き続き使用できます:

Azure の追加の構成

Azure Repos または Azure DevOps を使用する場合は、いくつかの追加の構成が必要です:

git config --global credential.https://dev.azure.com.useHttpPath true

これで、WSL ディストリビューション内で実行するすべての Git 操作で、GCM が使用されるようになります。 ホスト用に既にキャッシュされている資格情報がある場合は、それらへのアクセスが資格情報マネージャーから行われます。 そうでない場合は、Linux コンソールを使用しているとしても、資格情報を要求するダイアログ応答が表示されます。

ヒント

コード署名セキュリティに GPG キーを使用している場合は、お使いの GPG キーを GitHub のメールに関連付ける必要があります。

Git Ignore ファイルの追加

プロジェクトに .gitignore ファイルを追加することをお勧めします。 GitHub には、ユースケースに従って整理された便利な gitignore テンプレートのコレクションと .gitignore ファイルの推奨されるセットアップが用意されています。 たとえば、GitHub の既定の Node.js 用 gitignore テンプレートがこちらです。

GitHub Web サイトを使用して新しいリポジトリを作成することを選択した場合は、リポジトリを初期化する場合に利用できるチェックボックスがあります。README ファイル、特定の種類のプロジェクトに合わせて設定された .gitignore ファイル、必要に応じてライセンスを追加するためのオプションが対象になります。

Git と VS Code

Visual Studio Code には、Git のサポートが組み込まれています。これには、変更内容が表示され、ユーザーに代わってさまざまな Git コマンドが処理されるソース管理タブが含まれます。 こちらで VS Code の Git サポートの詳細を確認してください。

Git の行の末尾

Windows、WSL、コンテナー間で同じリポジトリ フォルダーを操作している場合は、一貫性のある行の末尾を設定してください。

Windows と Linux では使用される既定の行の末尾が異なるため、Git で行の末尾以外に違いがないものが変更されたファイルとして多数報告されることがあります。 これが発生しないように、.gitattributes ファイルを使用するか、Windows 側でグローバルに行の末尾の変換を無効にすることができます。 こちらの Git の行の末尾を解決することについて説明する VS Code のドキュメントを参照してください。

その他のリソース