このコマンドを1行で実行したい:
git pull && [my passphrase]
どうやってするの?
これはあなたが求めていたものではありませんが、http(s)の場合:
https://user:pass@domain/repo
、多くの場所でユーザー/パスが表示されるため、実際にはお勧めしません...クレデンシャルヘルパーの使用例
git config credential.helper store
-クレデンシャルを無期限に保存します。git config credential.helper 'cache --timeout=3600'
-60分間保管sshベースのアクセスの場合、必要に応じてsshキーを提供するsshエージェントを使用します。これには、コンピューターで鍵を生成し、公開鍵をリモートサーバーに保存し、秘密鍵を関連する鍵ストアに追加する必要があります。
コマンドラインでhttps接続のクレデンシャルを提供する1つの方法を見つけました。git pullの完全なURLを指定し、そこにクレデンシャルを含める必要があります。
git pull https://username:password@mygithost.com/my/repository
以前にクレデンシャルを使用してリポジトリのクローンを作成する必要はありません。これは、クレデンシャルがで終わらないことを意味します.git/config
。(ただし、シェルがあなたを裏切って、コマンドラインを履歴ファイルに保存しないようにしてください。)
質問に直接答えることはありませんが、基本的に、リモートサーバーをプルするたびにパスワードを再入力しない方法を探しているときにこの質問を見つけました。
ええと、git
あなたは有限の時間の間あなたの資格情報をキャッシュすることを可能にします。それはでカスタマイズ可能でgit config
あり、このページはそれを非常によく説明しています:
https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux
ターミナルで、次を実行します。
$ 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)
その後、クレデンシャルは要求された期間メモリに保存されます。
以下のcmdは、パスワードに@がない
git pull https://username:pass@word@mygithost.com/my/repository
場合に機能します。パスワードに@がある場合は、以下に示すように%40に置き換えます。
git pull https://username:pass%40word@mygithost.com/my/repository
クレデンシャルヘルパーコマンドラインオプションの使用:
git -c credential.helper='!f() { echo "password=mysecretpassword"; }; f' fetch origin
私はこれを通過したばかりなので、 Gitlabアクセストークンを使用することになったので、答えを提供しましたが、 Githubアクセストークンが必要な場合もあります
SSHを使用したいのですが、それを妨げるgitlabのバグがあります。パスワードを.netrcまたはURLに入れるのは理想的ではありません。サーバーの再起動時に資格情報マネージャーを再起動する必要がありますが、これは理想的ではありません。
したがって、私は次のように使用できるアクセストークンを選択しました。git clone https://<username>:<accessToken>@gitlab.com/ownerName/projectName.git
アクセストークンはURLとともに保存されるため、これは安全ではありませんが、アクセストークンは特定の操作に制限され、簡単に取り消すことができるため、username:passwordを使用するよりも安全です。
クローンが作成されると(またはURLが手動で更新されると)、すべてのgitリクエストはURLに保存されるため、アクセストークンを使用します。
これらのコマンドは、すでに複製したリポジトリを更新する場合に役立つことがあります。
git remote show origin
git remote remove origin
git remote add origin https://<username>:<accessToken>@gitlab.com/ownerName/projectName.git
編集:以下のコメントを必ず確認してください。重要なメモを2つ追加しました。
パスワードはgitbashでプロンプトが表示されるため、パスワードを使用する必要はなく、ユーザー名を使用できます。
git pull https://username@github.com/username/myrepo
gitクレデンシャルヘルパー「store」が暗号化されていないパスワードを保存する方法は、Git 2.5以降(2014年第2四半期)で変更されることに注意してください。濱野純夫によるコミット17c7f4d
を
参照()gitster
credential-xdg
クレデンシャルヘルパーのサンプル"
store
"バックエンドを微調整して、指定されたときにXDG構成ファイルの場所を尊重します。
ドキュメントは今言う:
指定されていない場合:
~/.git-credentials
クレデンシャルは、および$XDG_CONFIG_HOME/git/credentials
、から検索されます。- クレデンシャルは
~/.git-credentials
、存在する場合、または$XDG_CONFIG_HOME/git/credentials
存在し、前者が存在しない場合に書き込まれます。
Googleとstackoverflowをしばらく検索した後、質問に対する答えが見つからなかったので、ここで解決策を共有したいと思います。
git config --global credential.helper "/bin/bash /git_creds.sh"
echo '#!/bin/bash' > /git_creds.sh
echo "sleep 1" >> /git_creds.sh
echo "echo username=$SERVICE_USER" >> /git_creds.sh
echo "echo password=$SERVICE_PASS" >> /git_creds.sh
# to test it
git clone https://my-scm-provider.com/project.git
私もWindowsでやりました。ここで完全な答え
GitlabのCI/CDスクリプトでこれを実行しようとしている場合(gitlab-ci.yml
)。あなたが使うことができます
git pull $CI_REPOSITORY_URL
これは次のように変換されます:
git pull https://gitlab-ci-token:[MASKED]@gitlab.com/gitlab-examples/ci-debug-trace.gi
そして、それが使用するトークンはエフェメラル/ジョブごとのトークンであると確信しています。したがって、このメソッドのセキュリティホールは大幅に減少します。