web-dev-qa-db-ja.com

異なるgitリポジトリのユーザー名とパスワードを設定する方法

─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = [email protected]
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[Push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

ここで、github、gitlab、およびgitoriousのgit資格情報を入れたいので、毎回ブラウザーで資格情報を検索する必要はありません。これを自動化するにはどうすればよいですか?

私はzshを実行しています

20
shirish

SSHの使用

Git認証を処理するための一般的なアプローチは、それをSSHに委任することです。通常、リモートリポジトリでSSH公開鍵を設定します(egon GitHub )。その後、必要なときにいつでもそれを使用します認証する。もちろん、デスクトップ環境で処理するか、ssh-agentおよびssh-add

ユーザー名を指定する必要がないようにするには、SSHでも~/.ssh/config;たとえば私は持っています

Host git.opendaylight.org
  User skitt

そして、私は使用してクローンを作成できます

git clone ssh://git.opendaylight.org:29418/aaa

(そこにユーザー名がないことに注意してください)。

gitcredentialsの使用

SSHアプローチが適用されない場合(egHTTPS経由でアクセスされるリポジトリを使用している)、gitは資格情報を処理する独自の方法を持っています。 gitcredentials (通常は git-credential-store )。を使用してユーザー名を指定します

git config credential.${remote}.username yourusername

と資格情報ヘルパーを使用して

git config credential.helper store

--globalこの設定をどこでも使用する場合)。

次に、初めてリポジトリにアクセスすると、gitがパスワードを要求し、それが保存されます(デフォルトでは~/.git-credentials)。その後のリポジトリへのアクセスでは、ユーザーに確認する代わりに、保存されているパスワードを使用します。

21
Stephen Kitt

後でこれを見つけた人のために-私はこれで問題があり、最終的にそれを機能させました

https/credentials.helper/Ubuntu

  1. グローバルに設定解除:
    git config --global --unset credentials.helper
  2. ローカルで設定解除:(各リポジトリで)git config --unset credential.helper
  3. 各リポジトリの認証情報ファイルを作成します:(各リポジトリ内)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

それが最善の方法または唯一の方法であると言っているわけではありません-しかし、それは数時間の苛立たしい時間の後に私にとってはうまくいきました。

7
SteveJ