GitHubアカウントからPCにGitリポジトリのクローンを作成しました。
PCとラップトップの両方で作業したいのですが、1つのGitHubアカウントで作業します。
PCを使用してGitHubにプッシュまたはプルしようとすると、ユーザー名とパスワードが必要になりますが、ラップトップを使用している場合は必要ありません。
を操作するたびにユーザー名とパスワードを入力したくありません origin
。ここで何が欠けていますか?
一般的な原因は、SSH ではなくデフォルト (HTTPS) を使用した複製です。これを修正するには、リポジトリに移動し、[クローンまたはダウンロード] をクリックしてから、URL フィールドの上にある [SSH を使用] ボタンをクリックし、オリジン リモートの URL を次のように更新します。
git remote set-url origin git@github.com:username/repo.git
以下を使用して、リモートを HTTPS または SSH として追加したかどうかを確認できます。
git remote -v
これは GitHub: Switching remote URLs from HTTPS to SSHで文書化されています。
次のコマンドを実行して、資格情報のキャッシュを有効にします。
$ git config credential.helper store
$ git push https://github.com/owner/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 時間)キャッシュされます。
私はちょうど同じ問題に遭遇しました、そして私が見つけた最も簡単な解決策はHTTPSのものの代わりにSSHURLを使うことでした:
ssh://git@github.com/username/repo.git
そしてこれではありません:
https://github.com/username/repo.git
andの代わりにSSHキーだけで検証できるようになりました。username
password
SSH への変更とは別に、パスワードを平文で入力してもかまわない場合は、HTTPS を引き続き使用することもできます。これをあなた~/.netrc
に入力すると、ユーザー名/パスワードを要求されません (少なくとも Linux と Mac では):
machine github.com
login <user>
password <password>
追加(VonC の 2 番目のコメントを参照): Windows では、ファイル名は%HOME%\_netrc
.
暗号化したい場合は、VonC の最初のコメントもお読みください。
Git 1.7.10 以降を使用している場合に使用できる別の追加(user137717 のコメントを参照) 。
クレデンシャル ヘルパーを使用して Git に GitHub パスワードをキャッシュします。
HTTPS を使用して GitHub リポジトリのクローンを作成している場合は、資格情報ヘルパーを使用して、Git が GitHub と通信するたびに GitHub のユーザー名とパスワードを記憶するように指示できます。
これは、Linux、Mac、および Windows でも機能します。
以前の回答に混乱している初心者のために、次のことができます。
git remote -v
次のような応答が返されます
origin https://yourname@github.com/yourname/yourrepo.git (fetch)
origin https://yourname@github.com/yourname/yourrepo.git (push)
次に、他の多くの人が提案したコマンドを実行できますが、上記の yourname と yourrepo を知っているので、yourname/yourrepo.git
上記からカットアンドペーストするだけです:
git remote set-url origin git@github.com: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 one hour (setting is in seconds)
Git のプルとプッシュにhttpsを使用する場合はremote.origin.url
、プッシュのたびにユーザー名 (または/およびパスワード) を入力しないように、プロジェクトを構成するだけです。
設定方法remote.origin.url
:
URL 形式: https://{username:password@}github.com/{owner}/{repo} URL のパラメーター: * username
必要に応じて使用するユーザー名 (オプション)。
認証、 指定した場合、認証が必要なときにユーザー名を再度入力する必要はありません。 電子メールは使用しないでください。「@」を含まないユーザー名を使用してください。そうしないと、URL を正しく解析できません。 * パスワード オプション。認証が必要な場合に使用するパスワード。 指定すると、認証が必要なときにパスワードを再入力する必要がなくなります。 ヒント: この値はプレーン テキストとして保存されるため、セキュリティ上の理由から、このパラメーターを指定しないでください。 * 例えば git config remote.origin.url https://eric@github.com/eric/myproject
ssh
セットアップ手順はもう少し複雑ですssh
が、プロトコルを使用することは よりも優れたソリューションだと思います。https
大まかな手順:
ssh-keygen
、Linux では、Windows ではmsysgit
同様のコマンドが提供されます。~/.ssh
。コマンドを使用して ssh エージェントに追加しますssh-add
。remote.origin.url
Git リポジトリのssh
スタイルへの変更(例:git@gitlab.com:myaccount/myrepo.git
チップ:
https
とssh
プロトコルを切り替えます。単純に変更するだけで十分ですが、直接remote.origin.url
編集して値を変更することもできます ( Linux での使用など)。repo_home/.git/config
vi
通常、プロトコルごとに行を追加し、#
.
例えば
【リモート「オリジン」】 URL = git@gitlab.com:myaccount/myrepo.git # URL = https://myaccount@gitlab.com/myaccount/myrepo.git フェッチ = +refs/heads/*:refs/remotes/origin/*
GitHub パスワードを Git にキャッシュできます。
GitHub の公式ドキュメントの指示に従ってください。
上記のリンクの指示に従うと、毎回ユーザー名/パスワードを入力しなくても、リポジトリにプッシュ/プルできるようになります。
私にとってうまくいったのは、編集.git/config
して使用することでした
[remote "origin"]
url = https://<login>:<password>@gitlab.com(...).git
これが安全でないパスワードの保存方法であることは言うまでもありませんが、これが問題にならない環境やケースもあります。
SSH の代わりに HTTPS のクローンを作成し、プル、プッシュ、フェッチ時にユーザー名とパスワードのプロンプトで問題に直面している場合。この問題は、UBUNTU で簡単に解決できます。
ステップ 1: ルート ディレクトリに移動する
cd ~/
ファイル .git-credentials を作成します
このコンテンツをそのファイルに追加してusename
password
、githosting URL
https://user:pass@example.com
次に、コマンドを実行します
git config --global credential.helper store
これで、プッシュをプルして、レポからすべての詳細を簡単にフェッチできるようになります。
HTTPS の更新:
GitHub は、HTTPS を使用しているときに資格情報を保存する Windows 用の新しいプログラムを開始しました。
使用するには:
プログラムのダウンロードはこちらから
プログラムを実行すると、.gitconfig
ファイルが編集されます。.gitconfig
それらが複数ある場合は、正しいものを編集したかどうかを再確認してください。正しいものを編集しなかった場合は、次を追加します.gitconfig
[credential]
helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
の後の改行に注意して[credential]
ください。必須です。
コマンド ライン クライアントを開いて、git push origin master
一度試してみてください。パスワードの入力を求められた場合は、入力して完了です。パスワードを保存しました!
基本的に 2 つのオプションがあります。
両方のマシンで同じユーザーを使用する場合は、.pub キーを PC にコピーする必要があります。これにより、GitHub はあなたが同じユーザーであることを認識します。
PC 用に新しい .pub ファイルを作成し、それらのマシンを別のユーザーとして扱いたい場合は、新しい .pub ファイルを GitHub Web サイトに登録する必要があります。
それでもうまくいかない場合は、ssh が正しく構成されておらず、ssh がキーの場所を見つけられないことが原因である可能性があります。試す
ssh -vv username@github.com
SSH が失敗する理由の詳細を取得するには。
多くのユーザーが言っているように、Git リポジトリの URL を HTTPS から SSH に変更するだけです。
マシンで SSH キーを生成していない場合は、それを行う必要があります。
追加情報として、この変更を行った後も同じエラーが発生しました。
アクセス拒否。
私の場合、問題は、Windows シェルを使用して ngh コマンドを実行していたことです。このコマンドは、SSH フレーズを要求するプロンプトを開く必要がありますが、Windows シェルはこれらの種類のプロンプトを開かないため、認証は失敗しました。
そのため、Git シェルを開いてそこで ngh コマンドを実行し、要求されるたびに SSH フレーズをプロンプトに入力して「出来上がり」...うまくいきました!
Windows で Git (Git Bash など) を使用している場合 (および HTTPS から SSH に切り替えたくない場合) は、Git Credential Manager for Windows を使用することもできます。
このアプリケーションは、ユーザー名とパスワードを保持します...