1. ホーム
  2. windows

[解決済み] Git - Windowsで.netrcファイルを使用してユーザーとパスワードを保存する方法

2022-04-21 23:25:07

質問

Git を使って HTTP とユーザー - パスワードでリモート・リポジトリをクローンする場合、Windows で .netrc ファイルを使用することは可能でしょうか?

解決方法を教えてください。

<ブロッククオート

を使用することは可能ですか? .netrc ファイルを Windows で使用することはできますか?

はい:必ず必要です。

  • 環境変数の定義 %HOME% (Git2.0以前、Git2.0+では不要になりました)
  • を置く _netrc ファイルを %HOME%

Windows 7/10を使用している場合、[ ]内に CMD セッションで、タイプしてください。

setx HOME %USERPROFILE%

と、その %HOME% は' に設定されます。 C:\Users\"username" '.

そのフォルダに移動して ( cd %HOME% というファイルを作成し、' _netrc '

注:繰り返しになりますが、Windowsの場合、' _netrc ' ファイルを作成します。 ではなく a ' .netrc ' ファイルを作成します。

その内容は極めて標準的なものです。 <examples> をあなたの値で埋めてください。)

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>


ルーク がコメントで言及しています。

Windows 7 で msysgit の最新版を使用したところ、このメソッドを使用するために HOME 環境変数 を使用します。 _netrc ファイルだけで、うまくいきました。

これは確かに"に書いてあった通りです。 を試してみる " install " github .ssh ディレクトリがありません "です。

git-cmd.bat msysgit に含まれている %HOME% 環境変数

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%


爱国者は、コメントで「httpプロトコルでは動作しないようです"」と考えています。

しかし、私は次のように答えました。 netrc が使用されます。 curl で示されるように、HTTP プロトコルで動作します。 この例 (を探します。 netrc ' が表示されます)。 . また、ここではHTTPプロトコルで使用されています: " _netrc / .netrc に代わるもの cURL "です。


でよくある罠 netrc が Windows でサポートされている場合、オリジンの https url でユーザー名が指定されていると、git がそれを使用するのを回避してしまいます。

例えば .git/config ファイルに含まれています。

[リモート "オリジン"]。
     フェッチ = +refs/heads/*:refs/remotes/origin/*
     url = https://[email protected]/p/my-project/

Git は _netrc これを解決するには、ユーザ名を削除してください。

[リモート "オリジン"]。
     フェッチ = +refs/heads/*:refs/remotes/origin/*
     url = https://code.google.com/p/my-project/


代替案です。で git バージョン 1.7.9+ (2012年1月)。 この回答 から マーク・ロンゲアー を詳しく説明します。 クレデンシャルキャッシュ機構 どの また を使用することができます。 ない パスワードは以下のようにプレーンテキストで保存されます。


Git 1.8.3 (2013年4月)です。

を使用できるようになりました。 暗号化された .netrc (を使用)。 gpg ).

Windowsの場合。 %HOME%/_netrc ( _ でなく、' . ')

A 新しい読み取り専用のクレデンシャルヘルパー contrib/ ) と対話することができます。 .netrc/.authinfo ファイルが追加されました。

そのスクリプトを使用すると gpg で暗号化された netrc ファイルを使用する。 プレーンテキストファイルに保存されている認証情報の問題を回避することができます。

<ブロッククオート

を持つファイルは .gpg 拡張子はパースする前にGPGで復号化されます。

複数 -f の引数はOKです。それらは順番に処理され、最初に見つかったマッチするエントリがクレデンシャルヘルパープロトコル経由で返されます。

がない場合 -f オプションが指定されます。 .authinfo.gpg , .netrc.gpg , .authinfo および .netrc のファイルがこの順番で使用されます。

このクレデンシャルヘルパーを有効にするには。

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Gitは"を先頭につけることに注意してください。 git-credential- "をヘルパー名に追加して、パスから探します)。

# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'

#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'

詳しい例は"でご覧ください。 を使用する際に、パスワードの入力を省略する方法はありますか? https:// github "です。


Git 2.18+(2018年6月)では、暗号化されたものを復号化するために使用するGPGプログラムをカスタマイズできるようになりました。 .netrc ファイルを作成します。

参照 コミット 786ef50 , コミット f07eeed (2018年5月12日)による ルイス・マルサノ (``) .

(によって統合されました。 ジュニオ・C・ハマノ--。 gitster -- コミット 017b7c5 , 2018年5月30日)

<ブロッククオート

git-credential-netrc : 受け入れる gpg オプション

git-credential-netrc がハードコードされ、復号化には ' gpg とは関係なく gpg.program オプションを指定します。

これはDebianのようにモダンなGnuPGを別の名前で呼ぶディストリビューションでの問題で、例えば' gpg2 '