我已经安装了GitHub for Windows和GitExtensions,并在我的路径中安装了多个版本的git.exe。
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\cmd\git.exe
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\bin\git.exe
E:\cygwin\bin\git.exe
C:\Program Files (x86)\Git\cmd\git.exe
C:\Program Files (x86)\Git\bin\git.exe
现在,当我使用过去三个git push origin master
中的任何一个进行git.exe
时,它会询问我的用户名。但Portable Git不会要求用户名。请参阅以下屏幕截图:
心形角色只是^C
所以忽略它。
在这种情况下如何处理身份验证?最后,我希望最后三个Gits不要求授权。怎么可能?
我在GitHub的Git中找到了两个额外的文件,但我怀疑它们是否重要:
答案 0 :(得分:52)
如果你正在使用GitHub for Windows,你需要做的就是:
GitHub已经在命令行上为你解决了这个问题,对于HTTPS和基于SSH的遥控器都是
答案 1 :(得分:42)
对于Windows本身的GitHub,Paul Betts(GitHub staff)会温和地提醒所有人 G4W已经包含了凭据帮助(基于 CryptProtect 和我想CryptProtectData
function)
请参阅his answer below。
对于那些不使用G4W的人,请继续阅读。
添加到我的previous answer(通过控制台/命令行推送到GitHub时):
~/.netrc
(在Unix上)或%HOME%/_netrc
(在Windows上)这样的文件可以帮助您避免输入您对GitHub进行的每次git推送的凭证。
您可以在netrc
文件中存储所需的凭据
(对于GitHub或其他回购托管服务提供商)
但是:
以下各节介绍了这些问题:
(2013年9月3日)
通过应用程序配置2FA ,始终通过应用永远通过文字短信,如果您可以避免它。
原因是,通过该激活过程,您可以访问双因素密钥,该密钥用于每30秒生成第二个因子身份验证:
通过这种方式,您可以转到任意GAuth(Google Authenticator)客户端,输入相同的2FA密钥,然后查看完全相同的代码通过短信。
除此之外,如果您没有电话服务,它仍然有效;)
当然,您的Android手机或iPhone上的first client to use is GAuth。
这意味着您无需等待短信,并将2FA保留在手机上。
但是,使用您的密钥可以使您不仅限于手机上的客户端 您可以访问任何其他客户,例如:
对于所有这些客户(通过手机使用GAuth,或使用桌面客户端或网页),您将需要双因素密钥。
如果您通过短信激活了2FA:
注意:如果您在Android上的Gauth客户端中添加了一个密钥,而没有记住首先说明的密钥,all is not lost。
(但你需要一部扎根电话)
$ adb shell
# sqlite3 /data/data/com.google.android.apps.authenticator/databases/databases
sqlite> select * from accounts;
1|your@email.address|your2factorkey|0|0
sqlite> .quit
#exit
不要忘记获取然后保存相关的恢复代码(在Account Settings
section of your GitHub account中):
(另请参阅上一节有关 保存这些代码的内容)
_netrc
文件(请参阅 credential helper netrc with git1.8.3+ :gpg加密)
您需要在该文件中至少加密这两个凭据:
machine github.com
login username
password xxxx
protocol https
machine gist.github.com
login username
password xxxx
protocol https
然后,您只保留~/.netrc.gpg
或%HOME%/_netrc.gpg
但是,如果您启用上述新的双因素身份验证,则“xxxx
”将不是您的GitHub帐户:请参阅下一节“个人访问令牌”。
如果您已激活2FA,则无法使用GitHub密码。
<强> Anonymous access to user/repo.git denied
强>
您会看到以下内容(gpg
部分是因为我使用了netrc
credential helper):
C:\Users\VonC\prog\git\git>git push origin
Using GPG to open %HOME%/_netrc.gpg: [gpg2 --decrypt %HOME%/_netrc.gpg]
You need a passphrase to unlock the secret key for
user: "auser <email@email.com>"
2048-bit RSA key, ID A2EF56, created 2012-09-12 (main key ID DC43D6)
remote: Anonymous access to VonC/git.git denied. <=====
fatal: Authentication failed for 'https://VonC@github.com/VonC/git/' <=====
请转到 Developer
section of your GitHub Account (第Personal access tokens
小节),然后生成个人访问令牌:
该令牌不需要双因素身份验证:您可以在_netrc
文件中将其用作密码,然后您就可以直接推送到GitHub。
但与您的主要GitHub帐户密码的区别在于:
您可以撤销个人访问令牌(并生成一个新令牌),同时仍保持主密码不变。
如果您已在~/.netrc.gpg
文件中加密了主GitHub密码,则可以将其替换为新的个人令牌:
gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg
多行可读性:
gpg -d %HOME%\_netrc.gpg |
sed "s/yourPassord/YourPersonalAccessToken/g" |
gpg -e -r auser --yes -o %HOME%\_netrc.gpg
在类似unix的GoW (Gnu on Windows)命令(包括sed
)的帮助下,即使在Windows上也能正常工作。
我推荐在线凭据存储,例如 lastpass.com
您需要保存:
答案 2 :(得分:13)
https://help.github.com/articles/set-up-git
密码缓存部分说:
如果您不想使用GitHub for Windows,可以下载 这里为您的操作系统提供帮助:
这样做,任何其他git.exe都可以在不要求密码的情况下工作。 :)