解決在 MacOS 的環境下無法將程式碼 push 到 Azure DevOps Git 的問題

因為工作的關係,需要在不同作業系統下進行開發,為了統一管理程式碼,我採用了 Azure DevOps Git 私有庫作為版控工具。在 Windows 環境下,推送程式碼只需輸入帳號密碼即可成功進行,但在 MacOS 環境下,推送程式碼至存儲庫時卻會遇到 "fatal: Authentication failed" 的錯誤訊息。

lawrence@iMac TestRepo % git push origin master
Username for 'https://mydevgit.visualstudio.com': <我的登入帳號>
Password for 'https://<我的登入帳號>@mydevgit.visualstudio.com': <我的登入密碼>
fatal: Authentication failed for 'https://mydevgit.visualstudio.com/Default/PE/_git/TestRepo/'

這個問題已經發生了多次,每次發生時都需要重新上網查找解決方案,為了方便日後查閱,我將解決方法做了筆記,方便後續自己查看。


解決方式

許多人提到,這個問題只在 Mac 上發生。有些人建議使用個人存取權杖 (Personal Access Token) 來進行登錄,這樣可以解決問題。以下是設定步驟的紀錄:

  1. 登錄到 Azure DevOps 後台,在上方導覽列中找到設定圖示, 點擊設定圖示後,在下拉選單中選擇「Personal access tokens」,如下圖所示。

  2. 進入設定畫面後,請點擊「New Token」按鈕。

  3. 輸入名稱後,選擇適當的到期時間。接著,請尋找並勾選「Code」範圍,這將授予存取代碼存儲庫的權限。完成後,點擊「Create」按鈕以生成存取權杖。

  4. 完成後,您將獲得一個存取權杖。請記下此權杖,因為您將需要在登入時使用它。將此權杖視為您的密碼,當您需要推送程式碼到 Azure DevOps Git 存儲庫時,請使用此權杖來代替密碼。這樣應該能夠解決在 MacOS 上無法登入的問題。

小提醒,雖然已設定了憑證的有效期限,但在實際使用中仍可能遇到在有效期內,但每次 Pull 或 Push 卻要求重新輸入帳號密碼的情況。若發生這種情況,請記得使用您的存取權杖重新登錄,或者改用底下的設定方式。

執行下列指令後,還是需要重新登入一次,詳細說明可以參考 這篇 文章的幾種方式,執行完畢後就可以解決在 Mac 環境下每次 pull 和 push 都需要輸入密碼的問題。

git config --global credential.helper store

參考連結

解決 GitHub 無法 push,出現403問題 ( Git Push To Repository Key Username and Password Error )

解决Mac下SourceTree每次pull和push都要输入密码问题

留言