題 我如何確保Git不要求我提供我的GitHub用戶名和密碼?


我正在使用GitHub上的回購,每當我嘗試推送一些東西時,它會詢問我的GitHub用戶名和密碼。我不希望它這樣做。

我試過說明了 在Git中設置您的電子郵件,即設置Git變量github.user和github.token,但這沒有任何區別。

我不明白為什麼會這樣。


159
2017-10-14 17:17


起源


您需要緩存密碼: help.github.com/articles/set-up-git#password-caching - Piotr Usewicz


答案:


您需要設置一個ssh-agent,您只需要對其進行一次身份驗證。看到 這個答案 在SO上為了一個howto。


27
2017-10-14 17:28



但這個解決方案適用於ssh家庭短語。問題是git使用“git push”,它不會觸發ssh-agent,我假設。 (我已經這樣做了,所以我知道它不起作用。) - picardo
@picardo:我已經做到了,確實有效。 - Daenyth


今天遇到類似的問題:我在工作副本中搞砸了,所以我決定重命名目錄並從github再次克隆我的項目。但在這之後,我不得不輸入我的密碼來執行任何拉/推請求,而不是像以前一樣只輸入一次密碼。

那是因為今天我使用https協議來克隆項目!要檢查您正在使用的協議,請運行

git config -l

並查看以'remote.origin.url'開頭的行。

要切換協議:

git config remote.origin.url git@github.com:the_repository_username/your_project.git

the_repository_username 和 your_project 應替換為相應的存儲庫名稱和該存儲庫的所有者。如果您擁有存儲庫,則用戶名將是您的,否則將是存儲庫所有者的用戶名。


205
2017-08-08 22:36



它對我有用。有一件事是url不包含我的用戶名,但是它出現在github上的repo地址: git@github.com:some-user/repo-name.git - B Seven
注意:谷歌把我帶到了這裡。我有 remote.origin.url 設置為https方法,甚至沒有註意到有 https VS ssh 方法。這個URL幫助我看到了顯而易見的: help.github.com/articles/... - Chris K
有沒有辦法通過密碼輸入? - zishe
對於那些有git知識的人:任何差異(或偏好) git config remote.origin.url ... 上面使用的,與 git remote set-url origin ...? - Daryn
我無法想像如何刪除這樣的錯誤來源。答案是: git remote rm origin - Vacilando


如果您使用的是HTTPS而不是SSH,則可以按照以下步驟操作:

  1. 找到您的遠程URL(remote.origin.url)

    git config -l
    

    感謝Sergio Morstabilini

  2. 您的遠程URL將如下所示: HTTPS:// {USERNAME} @ github.com / {USERNAME} / {REPONAME}的.git

  3. 執行以下命令:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    

28
2017-12-03 22:40



我的用戶名本身包含 @,沒對我工作。 - coding_idiot
但如果沒有(你不需要使用你的電子郵件)它完美無缺!謝謝。 - Killah
如果您的用戶名包含@,則需要對其進行URL編碼。 meyerweb.com/eric/tools/dencoder - Tim Bodeit
出於安全原因,您應該省略密碼。 - zygimantus
請注意,密碼將以純文本形式存儲在 .git/config 文件! - Amro


我更喜歡使用HTTPS,我發現它比設置ssh密鑰更容易,更安全。

使用HTTPS,您可以阻止git使用以下內容詢問github遙控器的用戶名:

git config --global url."https://yourusername@github.com".insteadOf "https://github.com"

您至少可以通過以下方式降低頻率git要求輸入密碼:

git config --global credential.helper 'cache --timeout=28800'

其中28800是8小時。當我開始工作時,我只使用此設置輸入一次密碼。

之後,您將在這裡輸入這些條目 ~/.gitconfig

[url "https://yourusername@github.com"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

資源:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config


25
2017-11-21 04:27



它就像一個魅力。謝謝。 - david euler


如果您使用HTTPS在Windows上,請嘗試使用 Git Credential商店  - 它使用Windows憑據存儲來保存您的名稱和密碼。

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

然後,當您下次輸入您的姓名和密碼時,它將為您記住它們。


6
2018-02-23 11:54



謝謝。該項目已重命名為 Git的-憑據管理器換的Windows。 - Michael S.


當您為github設置ssh密鑰時,如果它不是您的默認密鑰,則需要向您的部分添加一個部分 ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa

5
2017-10-14 19:45





此外,如果您希望每次都提示輸入密碼,而不是用戶名,那麼您可以使用用戶名將遠程配置為HTTPS ..就像這樣..

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name

在此之後,每次都會提示您輸入密碼,但不會提示您輸入用戶名。

這就是我喜歡的方式,因為我喜歡在與世界分享之前被迫輸入我的github密碼。


5
2017-08-11 03:17





如果你像我一樣使用雙因素身份驗證,事情會有所不同。由於我在其他地方找不到好的答案,我會在這裡貼一個,以便我以後可以找到它。

如果您使用雙因素身份驗證,那麼指定用戶名/密碼將不會使用事件 - 您將獲得拒絕訪問權限。但是您可以使用應用程序訪問令牌並使用git的憑據幫助程序為您緩存該令牌。以下是相關鏈接:

我不記得我在哪裡看到這個,但當你被問到你的用戶名時 - 那就是你堅持使用應用程序訪問令牌的地方。然後將密碼留空。在我的Mac上工作。


2
2017-09-25 19:45





此外,如果您使用的是Windows,則可以使用:

$ git config --global credential.helper wincred

你只需要再簽一次然後git就會記住。


1
2018-04-05 14:31





使用SSH

為了防止GitHub在推送時詢問密碼,理想情況下你應該這樣做 使用SSH (git@github.com:...)而不是HTTPS URL(https://github.com/...)和 將您的SSH密鑰添加到您的GitHub帳戶。看到: 我應該使用哪個遠程URL?

GitHub - Clone with SSH

憑證助手

否則,如果你真的需要使用HTTPS,來 在Git中緩存你的GitHub密碼,你應該使用 憑證助手 告訴Git每次與GitHub交談時都要記住你的GitHub用戶名和密碼。

  • 蘋果電腦: git config --global credential.helper osxkeychain (osxkeychain helper 是必須的),
  • 視窗: git config --global credential.helper wincred
  • Linux等: git config --global credential.helper cache

.netrc

另一種方法是使用配置您的用戶/密碼 ~/.netrc (_netrc 在Windows上),例如

machine github.com
login USERNAME
password PASSWORD

OAuth的

使用 OAuth令牌 (個人API令牌)推動變革,例如

git push https://4UTHT0KEN@github.com/foo/bar

有關:


1
2018-06-19 21:27