押すたびにGitがユーザー名を要求する


674

私がリポジトリにプッシュしようとするたびに、gitは両方を要求しusername & passwordます。

毎回パスワードを再入力しても問題はありませんが、ユーザー名の入力に問題があります。httpsリポジトリのクローンを作成するために使用しています。

だから、どのようにすることができます私のconfigure gitのそれはを要求しないようにusername、それぞれにgit push

Linuxは初めてですが、WindowsのIIRCはgit pushパスワードを要求するだけです。



@Wug:しかし、パスワードを保存したくありません。ユーザー名のみを保存します。
RanRag 2012

4
これらの指示に従い、パスワード行を省略してみてください。
Wug


-あなたの最初の質問へのスーパーユーザーの答えもありsuperuser.com/questions/847181/...
dk14

回答:


974

編集(モデレーターとコメントによって提案された@ dk14による)

警告:credential.helper store回答から使用する場合、パスワードは完全に暗号化されずに(「そのまま」)に保存され~/.git-credentialsます。特に雇用主がセキュリティの問題に対してまったく寛容でない場合は、以下のコメントセクションまたは「リンクされた」セクションからの回答を参照してください。

受け入れられたとしても、ユーザー名のみ(パスワードではなく)を省略することについての実際のOPの質問には答えません。その正確な問題を抱えている読者にとっては、@ grawityの答えが役に立つかもしれません。


元の回答(@Alexander Zhuによる):

次のコマンドを使用して資格情報を保存できます

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

また読むことをお勧めします
$ git help credentials


160
警告、この方法にはセキュリティがありません。パスワードはプレーンテキストとして保存されます。
Mark Lakata、2015

13
あなたはここにセキュリティを実現するためのより良い方法を見つけることができます- stackoverflow.com/a/28104587/1809978
dk14

4
@MarkLakata-この回答のコマンドを元に戻す方法を教えてください。元に戻した後、安全な方法で資格情報を保存します。
MasterJoe2 2016

25
@ testerjoe2 trygit config --unset credential.helper
dk14

1
タイムアウトの設定を忘れないでください。デフォルトは15分です。値を3,000万に設定すると、約1年かかります。ここにあります:stackoverflow.com/a/35942890/1579667
Benj

180

これは、.git/configローカルリポジトリのファイルで実行できます。このファイルには、「url」というエントリを持つ「remote」というセクションが含まれています。「url」エントリには、対象のリポジトリのhttpsリンクが含まれている必要があります。

ホストの「url」の前にユーザー名をgit付けると、ユーザー名の入力を求められなくなります。次に例を示します。

url = https://username@repository-url.com

5
ユーザー名またはpwに特殊文字を使用する場合は、エスケープする必要があります。正しいエスケープ文字については、en.wikipedia.org / wiki / Percent- escapeを参照してください。たとえば、 "!@#" [引用符なし]は "%21%40%23"に置き換えられます。以下の「Daniel Lerch」の回答も参照してください
nsof 2014

1
同じリポジトリで作業している他の人に私のユーザー名が表示されますか?
CodyBugstein 2015年

17
これは、OPの質問、つまり「パスワードではなく、ユーザー名を保持する方法」に対する正しい答えである必要があります。この回答は、ユーザー名を永続化する適切な方法であるだけでなく、の潜在的なセキュリティリスクも回避しますgit config credential.helper store
RayLuo 2016年

私はこの答えに感謝し、この方法を試しましたが、それでも毎回私に尋ねます(v 2.1.4)-name@gitlab.comおよびname%40mailaddress.com@gitlab.comでremoteurlを試しました-常に要求しますusername for https://gitlab.com:
eli 2016

1
私はこれを試してみましたunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger 2017

118

Gitリポジトリでの永続的な認証

次のコマンドを実行して、資格情報のキャッシュを有効にします。

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

キャッシュの有効期限も指定する必要があります

git config --global credential.helper "cache --timeout 7200"

資格情報のキャッシュを有効にすると、7200秒(2時間)キャッシュされます。


認証情報ドキュメントを読む

$ git help credentials

タイムアウトを7200に設定しました。しかし、テストのためにタイムアウトを5に設定することを考えました。そこで、5に設定しましたが、30秒後にもう一度プッシュしようとしたときに、ユーザー名またはパスワードの入力を求められませんでした。
Buttle Butkus、2016年

グローバルに保存する必要はありません。
Jay Patel、2016年

セキュリティに関しては、ドキュメントを参照する価値があります。「このコマンドは、将来のGitプログラムで使用するために、資格情報をメモリにキャッシュします。保存された資格情報はディスクに触れることはなく、構成可能なタイムアウトの後で忘れられます。」git-scm.com/docs/git-credential-cache
mloskot

2
git config credntial.helper store〜/ .git-credentialsファイルに平文クレデンシャルを保存する責任がある、その危険なコマンドではありませんか?(そして私の経験では)...キャッシュ...コマンドで十分だと思います:git config --clogal credential.helper 'cache --timeout 7200'dir:~/.git-credential-cacheキャッシュファイルを含むdirを作成するので、「...ストア」コマンドではなく、このコマンドを実行します。
eli 2016

私のために働いていませんでした。それでも毎回パスワードを要求する
Ian Grainger、2017

75

GitHubのこの記事で説明されているように、新しいSSHキーを追加します

それでもGitがユーザー名とパスワードを要求する場合は、リモートURLに変更https://github.com/git@github.com:てみてください。

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
これは正解です!資格情報の保存は信じられないほど安全ではありません。SSHキーを配置している場合、ここで説明されている正しいURLがないため、資格情報が要求されます。
Alexis Wilke

2
または使用できますgit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness 2018年

1
git config remote.origin.url git@gitlab.com:adammajewski / ray-backward-iteration.git
Adam

1
ありがとう、これが私が探していた答えです。
Yupeng Tang

50

私が見つけた最も簡単な方法は、次のコマンドを使用することでした:

git config --global credential.https://github.com.username <your_username>

これはサイトごとに機能し、グローバルgit構成を変更します。

変更を確認するには、次を使用します。

git config --global --edit

1
どういうわけか、これは私のために働いた唯一の方法でした。ありがとう!
数学

この方法は安全ですか?githubのパスワードはローカルコンピュータにのみ保存され、githubにプッシュされませんか?
Akin Hwan

なぜこれが承認された回答ではないのかわかりません。コマンドは完全に機能し、完全に応答します。質問には、パスワードではなくユーザー名を保存します。ありがとう、ベン!
AmaelH

次も実行できます:[git config --global credential.helper 'cache --timeout = 3600']パスワードは毎回1時間保存されます
obenda

31

sshの代わりにhttpsを使用している場合.git/config、user701648が言うように「url」を編集できますが、必要に応じてパスワードも追加できます。

url = https://username:password@repository-url.com

1
@パスワードに含まれている場合はどうなりますか?url = https://username:abc@123@repository-url.comそれは私にエラーを与えていますCould not resolve host: @123@git.com
Rahul Mankar

usernameサーバーがリダイレクトするとき(FOOからFOO.gitなど)、この部分は無視されるようです。
ミハイル

22

Git構成ファイルに次のようなものを入れることにより、特定のサイトのすべてのリポジトリにユーザー名を設定できます。「https://example.com」と「me」を実際のURLと実際のユーザー名に変更します。

[credential "https://example.com"]
    username = me

(これは「git help credentials」から直接です)


16

複製されたリポジトリの変更は機能します:

git remote set-url origin git@github.com:gitusername/projectname.git

キャッシュされた資格情報を使用すると機能し、タイムアウト期間を設定すると、煩わしさが軽減されます。Windows資格情報ヘルパーを使用する場合、それが最も簡単な方法です(特にSSHがブロックされている場合)。


これは、質問を具体的に求めているGitHubのための正しい答え(...(必ずなぜあなたはdownvotedてしまったではないが)である。
ティムGroeneveld

12

httpではなくSSHを使用していることを確認してください。この SOの答えを確認してください。


3
しかしhttp、私の大学でsshはsys-admin部門によってブロックされているため、使用する必要がありました。
RanRag 2012

次に、おそらくこのリンクが役立ちます。
gkris

これには公式のGitHubヘルプページがあります。私に起こったのは、ログインする前に自分のリポジトリの1つをクローンしたため、自分を認識できず、デフォルトのHTTPSになっていると思います。help.github.com/articles/changing-a-remote-s-url
anon58192932


9

user701648の回答に加えて、次のコマンドを使用して、プロジェクトフォルダーではなく、ホームフォルダー(すべてのプロジェクトに対してグローバル)に資格情報を保存できます。

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

git pullのみの場合、git pull origin xxx、gitはユーザー名とパスワードの両方を要求します。

git config credential.helper store

できます。


9

最も簡単な方法は~/.netrc、次の内容のファイルを作成することです。

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(ここに示すように:https : //gist.github.com/ahoward/2885020

次のように入力してパスワードを読み取れないように、このファイルのアクセス許可を閉じることもできます。

chmod 600 ~/.netrc


4

ユーザー名の入力を回避しながら、パスワードの入力を求められるようにするには、ユーザー名を含むリポジトリを複製するだけです。

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationよりも信頼性の高い方法でありますhttps+credential.helper

次のように、すべてのリポジトリに対してHTTPSではなくSSHを使用するように構成できます。

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOfここに記載されています


2

クイックメソッド

作業ディレクトリ内にあるときにあなたのgitのURLを取得します:

git config remote.origin.url

次に:

git config credential.helper store

git push "url of your git"

最後にユーザー名とパスワードを尋ねます

完了しました。


1

あなたはただ走ることができます

git config --global credential.helper wincred

システムのGIT for Windowsをインストールしてログインした後。


クエリにLinuxの単語が表示されませんでした。私の悪い
cyperpunk

1

Mac OS のみ)

以下のためのWindowsLinuxの下記のGithubのドキュメントのリンクを参照してください。

Githubドキュメントから:ドキュメントリンク

GitHubパスワードをGitにキャッシュする

  • osxkeychain資格情報ヘルパーを使用するには、Git 1.7.10以降が必要です。

    Gitのバージョンを確認するには: git --version

  • osxkeychainヘルパーが既にインストールされていることを確認するには:

    git credential-osxkeychain

    次の応答が得られた場合、すでにインストールされており、Macで使用する準備ができています。

    > Usage: git credential-osxkeychain <get|store|erase>

    上記のように応答がない場合は、次のコマンドを実行してインストールできます。

    git credential-osxkeychain

  • gitクレデンシャルにosxkeychainをグローバルに使用するようにgitに指示するには:

    git config --global credential.helper osxkeychain

    資格情報をキーチェーンに保存する前に、プロンプトが1回表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.