─[$] 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
今度は、ブラウザで資格情報を見つける必要がないように、git資格情報をgithub、gitlab、gitoriousに入れたいと思います。これをどのように自動化できますか?
zshを実行しています。
答え1
SSHの使用
git認証を処理する一般的な方法はSSHに委任することです。通常、リモートストレージ(例えば GitHubから)認証が必要なときはいつでも使用してください。もちろん、キーエージェントを使用したり、デスクトップ環境で処理したり、ssh-agent
手動で使用して処理したりできますssh-add
。
ユーザー名を指定したくない場合は、SSHで構成することもできます。~/.ssh/config
たとえば、次のようになります。
Host git.opendaylight.org
User skitt
その後、次のように複製できます。
git clone ssh://git.opendaylight.org:29418/aaa
(ここにはユーザー名はありません。)
使用gitcredentials
SSH方式を適用できない場合(例えばHTTPS経由でアクセスされるリポジトリを使用している場合)gitには資格情報を処理する独自の方法があります。gitcredentials
(そして一般的にgit-credential-store
)。以下を使用してユーザー名を指定します。
git config credential.${remote}.username yourusername
資格情報ヘルパーで使用
git config credential.helper store
(--global
この設定をどこでも使用する場合は指定してください)。
その後、初めてリポジトリにアクセスすると、gitはパスワードを要求して保存します(デフォルトでは~/.git-credentials
)。その後、リポジトリにアクセスすると、ユーザーに尋ねるのではなく、保存されたパスワードを使用します。
警告する:資格情報をホームディレクトリにプレーンテキストとして保存します。したがって、これが意味するものを理解し、リスクに快適でない限り、お勧めできません。
答え2
後で知っている人のために - 苦労しましたが、結局成功しました。
https/credentials.helper/Ubuntu
- グローバル設定解除:
git config --global --unset credentials.helper
- ローカル設定解除:(各リポジトリで)
git config --unset credential.helper
各リポジトリの資格情報ファイルを作成する:(各リポジトリ内)
git config credential.helper 'store --file ~/.git_reponame_credentials'
これが最善の方法であるか、唯一の方法とは言えませんが、数時間イライラした後は効果がありました。
答え3
これらのSSHキーを含む他のアカウントがgithubにある可能性があります。このような場合:
- githubからログアウト
- 別のアカウントでログイン
- SSHキーの削除
- githubからログアウト
- 希望のユーザーとしてログイン
- 必須ユーザーにSSHキーを割り当てる
- "git push"などのgitコマンドをもう一度やり直してください。