私のGithubアカウントから自分のPCにgitリポジトリをクローンしました。
私は自分のPCとラップトップの両方で作業したいが、1つのGithubアカウントで作業したい。
私のPCを使ってGithubにプッシュしたり、Githubからプルしようとすると、ユーザー名とパスワードが必要になりますが、ラップトップを使用するときには必要ありません。
Originとやりとりするたびに自分のユーザ名とパスワードを入力したくはありません。ここで何が足りないの?
よくある間違いは、SSHの代わりにデフォルト(HTTPS)を使用して複製することです。これを修正するには、リポジトリに移動して[クローン作成またはダウンロード]をクリックし、次にURLフィールドの上にある[SSHを使用]ボタンをクリックして、OriginのリモートURLを次のように更新します。
git remote set-url Origin [email protected]:username/repo.git
これはGitHubで文書化されています: HTTPSからSSHへのリモートURLの切り替え 。
次のコマンドを実行して 認証情報のキャッシュ を有効にします。
$ git config credential.helper store
$ git Push https://github.com/owner/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
caching expire を使用することもできます。
git config --global credential.helper 'cache --timeout 7200'
認証情報のキャッシュを有効にすると、 7200秒(2時間) の間キャッシュされます。
私はちょうど同じ問題に出会いました、そして私が見つけた最も簡単な解決策はHTTPSの代わりにSSH URLを使うことでした:
ssh://[email protected]/username/repo.git
そしてこれではない:
https://github.com/username/repo.git
username
とpassword
の代わりに just SSH Key
で検証できるようになりました。
SSHへの変更とは別に、パスワードを平文で入力しても構わない場合は、HTTPSを使用し続けることもできます。これをあなたの~/.netrc
に入れると、あなたのユーザ名/パスワードを尋ねることはありません(少なくともLinuxとMacでは):
machine github.com
login <user>
password <password>
追加 (VonCの2番目のコメントを参照):Windowsではファイル名は%HOME%\_netrc
です。
暗号化したい場合のために、VonCの最初のコメントも読んでください。
もう1つの追加 (user137717のコメントを参照) git 1.7.10以降の場合に使用できます 。
クレデンシャルヘルパーを使ってgithubのパスワードをgitにキャッシュしてください :
HTTPSを使用してGitHubリポジトリを複製する場合は、GitHubと通信するたびにGitHubのユーザー名とパスワードを覚えておくようにGitに伝えるために認証ヘルパーを使用できます。
これはLinux、Mac、Windowsでも動作します。
前の答えで混乱している初心者のために、あなたはすることができます:
git remote -v
これは次のように反応します
Origin https://[email protected]/yourname/yourrepo.git (fetch)
Origin https://[email protected]/yourname/yourrepo.git (Push)
それからあなたは他の多くが提案したコマンドを実行することができます、しかし今、あなたは上からyournameとyourrepoを知っているので、あなたはただ上からyourname/yourrepo.git
をカットアンドペーストすることができます
git remote set-url Origin [email protected]:yourname/yourrepo.git
出典: セットアップGit
次のコマンドはしばらくの間パスワードをメモリに保存します。
( git 1.7.10 以降の場合)
$ git config --global credential.helper cache
# Set git to use the credential memory cache
$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
Git pull&Pushに https を使用する場合は、プッシュするたびに入力ユーザー名(または/およびパスワード)を避けるために、プロジェクトのconfig remote.Origin.url
だけを使用してください。
remote.Origin.url
の設定方法:
URLフォーマット: https:// {ユーザー名:パスワード@} github.com/ {所有者}/{リポジトリ} urlのパラメータ: [username] [username]オプション、認証が必要な場合に使用するユーザー名、指定されている場合は認証が必要な場合にユーザー名を再入力する必要がない、[email]を使用しない、[use] "@"を含まないユーザー名、そうでないとURLを正しく解析できません。 * password オプション、認証が必要な場合に使用するパスワード、 を指定した場合、no認証が必要な場合はパスワードを再入力する必要があります。 ヒント: この値はプレーンテキストとして保存されるため、セキュリティ上の理由から、このパラメータは指定しないでください[ ] * [.____例: git config remote.Origin.url https://[email protected]/eric/myproject
ssh
を使うセットアップ手順はもう少し複雑ですが、ssh
プロトコルを使用するほうがhttps
よりも優れた解決策だと思います。
大まかなステップ:
ssh-keygen
、ウィンドウではmsysgit
は同様のコマンドを提供します。~/.ssh
)に保管してください。そしてssh-add
コマンドでsshエージェントに追加してください。remote.Origin.url
をssh
スタイルに変更してください、例えば[email protected]:myaccount/myrepo.git
ヒント:
https
プロトコルとssh
プロトコルを切り替えます。単にremote.Origin.url
を変更するだけで十分です、またはrepo_home/.git/config
を直接編集して値を変更することができます(例えば、Linuxではvi
を使用)。
通常、プロトコルごとに1行追加し、そのうちの1つを#
を使用してコメントアウトします。
例
[remote "Origin"] url = [email protected]:myaccount/myrepo.git #url = https://[email protected]/myaccount/myrepo .git fetch = +参照/ヘッド/ *:参照/リモート/起点/ *
GitHubのパスワードをGitにキャッシュすることができます。
Githubの 公式ドキュメント の指示に従ってください。
上記のリンクからの指示に従った後、あなたは毎回あなたのユーザー名/パスワードを入力せずにあなたのレポに/からpush/pullすることができるはずです。
私にとってうまくいったのは.git/config
を編集して使うことでした
[remote "Origin"]
url = https://<login>:<password>@gitlab.com(...).git
言うまでもなく、これはあなたのパスワードを保存するための安全でない方法ですが、これが問題にならないかもしれない環境/ケースがあります。
これは別の選択肢です:
書く代わりに
git Push Origin HEAD
あなたが書くことができます:
git Push https://user:[email protected]/path HEAD
ほとんどのシェルでは明らかにこれはパスワードが履歴にキャッシュされることになるので、それを覚えておいてください。
HTTPS用のアップデート:
Githubは、HTTPSを使用しているときに資格情報を保存するWindows用の新しいプログラムを立ち上げました。
使用するには:
here からプログラムをダウンロードしてください。
あなたがプログラムを実行すると、それはあなたの.gitconfig
ファイルを編集します。複数ある場合は、正しい.gitconfig
を編集したかどうかを再確認してください。正しいものを編集していない場合は、.gitconfig
に以下を追加してください。
[credential]
helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
[credential]
の後で改行してください。必須です。
コマンドラインクライアントを開き、git Push Origin master
を1回試してください。パスワードの入力を求められたら、それを入力してください。パスワードを保存しました
基本的に2つの選択肢があります。
両方のマシンで同じユーザーを使用している場合は、.pubキーをPCにコピーする必要があるので、githubは自分が同じユーザーであることを認識しています。
あなたのPC用に新しい.pubファイルを作成し、それらのマシンを異なるユーザーとして扱いたい場合は、github Webサイトに新しい.pubファイルを登録する必要があります。
それでもうまくいかない場合は、sshが正しく設定されておらず、そのsshが鍵の場所を見つけられないことが原因の可能性があります。やってみる
ssh -vv [email protected]
SSHが失敗する理由を詳しく知るために。
Windows gitユーザーの場合、git config --global credential.helper store
を実行した後で、まだパスワードの入力を求められる場合は、設定の書き込み先を確認してください。このコマンドを使う
git config --list --show-Origin
私の場合は、手動で設定ファイル 'C:\ Program Files\Git\mingw64\etc\gitconfig'を編集して、以下のテキストを追加しても動作します。
[credential] helper = store
私は同じ問題を抱えていました。
プロジェクトから.git/configファイルを変更してください。
url = https://github.com/<your-user-here>/<your-repo-here>
に
url = [email protected]:<your-user-here>/<your-repo-here>
設定中のgitプロファイルにssh公開鍵を追加します。
sSH公開鍵用
cat ~/.ssh/id_rsa.pub
これは私のために働いたものです:
git remote set-url Origin https://[email protected]/username/reponame.git
例:
git remote set-url Origin https://[email protected]/jsmith/master.git
あなたは2つのステップを実行する必要があります -
1) git remote remove Origin
2) git remote add Origin [email protected]:NuggetAI/nugget.git
GitのURLがssh
のURLであり、httpsのURLではないことに注意してください。ここから選択できます。
あなたのgit設定ファイルを直接更新する: ( 空想コマンドを記憶したくない場合 )
お気に入りのテキストエディタで.git/config
ファイルを開きます。それはあなたがクローンしたフォルダか、あなたがgit initを実行したレポジトリの中にあるでしょう。そのレポジトリに行ってください。 .git
は隠しフォルダです。ctrl + h
を押すと隠しフォルダが表示されます(ターミナルのls -a
)。
これは.git/config
ファイルのサンプルです。これらの行をコピーして貼り付け、git情報でそれらの行を必ず更新してください。
[user]
name = Tux
email = [email protected]
username = happy_feet
[remote "Origin"]
url = https://github.com/happy_feet/my_code.git
fetch = +refs/heads/*:refs/remotes/Origin/*
SSHの場合は、次の形式でURL部分を変更します。
url = [email protected]:happy_feet/my_code.git
( 上記のフォーマットはgithubやbitbucketのような様々なgitリモートサーバーでは変わりません。バージョン管理にgitを使っている場合も同じです ):
注: リモートのgitリポジトリに接続するSSHの方法では、あなたのgitリモートサーバーにあなたの公開SSHキーを追加する必要があります( githubやbitbucketのように、SSHキーの設定ページを検索します )
SSH鍵の生成方法を知るには、次を参照してください。https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html
Sshキーや.netrcがうまくいかなかった場合は、 git-credential-store - ディスクに資格情報を保存するためのヘルパーがあります。
git config --global credential.helper store
デフォルトでは、認証情報は~/.git-credentials
に保存されます。それは作成されて書き込まれます。
このヘルパーを使用すると、パスワードは暗号化されずにディスクに保存され、ファイルシステムのアクセス許可によってのみ保護されます。これが許容できるセキュリティのトレードオフではない場合があります。
多くのユーザーが言っているように、あなたはちょうどあなたのgitリポジトリURLをhttpsからSSHに変更する必要があります。
あなたのマシンでSSHキーを生成していなければ、あなたはそれをしなければならないでしょう。
追加の情報として、この変更を行った後も同じエラーが表示されました:アクセス許可が拒否されました。
私の場合、問題はWindowsシェルを使用してnghコマンドを実行していたことです。このコマンドはSSHフレーズを要求するためのプロンプトを開くはずであり、Windowsシェルはこの種のプロンプトを開かないので、認証は失敗しただけです。
それで、私はただgitシェルを開いてそこでnghコマンドを実行し、それが要求される度にプロンプトにSSHフレーズを入れて「voilà」としなければなりませんでした...それはちょうどうまくいきました!
Windowsでgit(例えばgit bash)を使用している場合(そしてhttpsからsshに切り替えたくない場合)
https://github.com/Microsoft/Git-Credential-Manager-for-Windows を使うこともできます
このアプリケーションはあなたのためにユーザ名とパスワードを保管します...