git pushのコマンドのユーザー名とパスワード


107

コマンドでユーザー名とパスワードを指定して、gitリポジトリのクローンを作成することができます。例:

git clone https://username:password@myrepository.biz/file.git

プッシュ時にユーザー名とパスワードを指定することは可能ですか?したがって、たとえば、running git push origin --allはパスワードを要求する出力を行います。これを1つのコマンドで実行します。

(私はキーと他のソリューションをセットアップする機能を知っていますが、1つのコマンドでユーザー名とパスワードを使い続ける方法があるかどうか知りたいです。)Windows 8.1でGit Bashを実行しています。


解決策はありgit commitますか?
Nam Vu

回答:


157

はい、できます

git push https://username:password@myrepository.biz/file.git --all

この場合https://username:password@myrepository.biz/file.gitorigingit push origin --all

のその他のオプションを表示するにはgit pushgit help push


13
これはgit設定でユーザー名とパスワードをプレーンテキストで保存することに注意してください。
2015

4
プレーンパスワードの代わりに、パスワードハッシュを使用できます
Vasiliy Vanchuk

1
@VasiliyVanchukどのようなハッシュを使用しますか?これはGithubで機能しますか?
Raphi

14
パスワードに含まれている場合はどうなります@か?
Rahul Sharma

1
完全なパスを' 'で囲むことをお勧めします。例:git push 'https://username:password@myrepository.biz/file.git'
AlikElzin-kilaka '31年

27

以下のフォーマットを使用しました

git push https://username:password@myrepository.biz/file.git --all

パスワードまたはユーザー名に@が含まれている場合は、%40に置き換えます


WebUtility.UrlEncode(password)を使用して%40を取得することもできます
iPradeep

phpユーザーの場合、urlencode($password)これを使用すると、これだけでなく、すべての特殊文字がエンコードされます@
shyammakwana.me

3

Gitのドキュメントによれば、git pushコマンドの最後の引数は、プッシュしたいリポジトリである可能性があります:

    git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
             [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
             [<repository> [<refspec>…]]

また、repositoryパラメーターはURLまたはリモート名のいずれかです。

したがって、cloneコマンドの例と同じ方法でユーザー名とパスワードを指定できます。


2
これは適切に思えますが、例として、ユーザー名とパスワードを引数としてgit repoを追加すると、パスワードの入力を求められます。
ジェイク

3

このようなURLを使用すると、Gitはパスワードを保存しません。代わりに、ユーザー名を保存するだけなので、次回はパスワードの入力を求められるだけです。マニュアルで説明されているように、パスワードを保存するには、外部の資格情報ヘルパーを使用する必要があります。Windowsの場合、Git用のWindows資格情報ストアを使用できます。このヘルパーは、GitHub for Windowsにもデフォルトで含まれています

使用すると、パスワードは自動的に記憶されるため、一度入力するだけで済みます。したがって、クローンを作成すると、パスワードの入力を求められます。その後、リモートとの通信を行うたびにパスワードの入力を求められることはありません。代わりに、資格情報ヘルパーがGitに認証を提供します。

もちろん、これはhttpsによる認証でのみ機能します。sshアクセス(git@host.com/repository.git)の場合、SSHキーと、覚えているキーssh-agent(plinkを使用している場合はPuTTYのページェント)を使用します。


4
「キーやその他のソリューションを設定できることは承知していますが、1つのコマンドでユーザー名とパスワードを使い続ける方法があるかどうか知りたいです。」
Marvin

@Marvin私はその発言を知っていますが、2文の回答を提出したくなかったので、HTTPS経由での接続に興味がないだけの可能性がある他のユーザーの情報を含めました。
2015

4
しかし、それでも彼の質問には答えません。
Marvin

3

可能ですが、git 2.9.3(2016年8月)より前git pushは、クローンリポジトリにプッシュバックするときに使用される完全なURLを出力していました。
ユーザー名とパスワードが含まれます!

しかし、誰より:参照は68f3c07コミットしない(2016年7月20日)を、そして882d49cコミットにより(2016年7月14日)のジェフ・キング(peff
(による合併Junio C浜野- gitster-71076e1コミット、2016年8月8日)を

push:ステータス出力のURLを匿名化

Commit 47abd85(フェッチ:ユーザー名を保存する前にURLからユーザー名を削除する、2009-04-17、Git 1.6.4) URLを匿名化するようにフェッチを教えました。
そこでの主な目的は、merge-commitメッセージにパスワードを貼り付けないようにすることでしたが、副作用として、それらをstderrに出力することも避けました。

プッシュ側にはマージコミットの問題はありませんが、それらをstderrに出力しないようにする必要あります。同じ匿名化機能を再利用できます。

これが有効になるには、資格情報がコマンドラインまたはgit構成ファイルに表示される必要があることに注意してください。どちらも特に安全ではありません。
したがって、代わりに資格情報ヘルパーを使用するように切り替える必要があります。これにより、この問題は解消されます。

しかし、それは何らかの理由でURLに埋め込まれた資格情報を使用することになる人々の状況を改善しない言い訳にはなりません。


1

特別な文字を含むパスワードに問題がある場合は、パスワードを省略すれば、パスワードの入力を求められます。

git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.