1. 程式人生 > >git爬坑不完全指北:Permission to xxx.git denied to user的解決方案

git爬坑不完全指北:Permission to xxx.git denied to user的解決方案

  由於對之前github賬戶名不太滿意,又不像大神一樣需要兩個賬號繫結。所以今天註冊了新賬號,想把電腦繫結到新賬號上,結果就踩坑了……報錯如標題。

  在網上按照這個題目可以搜尋出一大堆的解決方案,但都是一個思路,那就是兩個賬號繫結兩個金鑰。先不說操作過程稍微複雜點吧,關鍵在於這不是我想要的結果,我就要一個賬號!

  於是,不妥協的我,開啟了搜尋→嘗試→失敗的死迴圈。終於,2個小時後,我放棄了……成功了。

  好了,閒話不多說,上解決方案。

  首先分析原因:

通讀報錯語句的話,我們從中能讀出一條資訊——老賬戶想對新賬戶的倉庫進行訪問操作,但是被拒絕了;

    不管是add、commit都沒有問題,只要push,就報錯,這說明問題的原因就在push執行這一步;

    然後回憶一下,push時候,到底都幹了些什麼操作,會記住原來的賬戶資訊…emmm…emmm……ding!賬號登入!

    到這,恍然大悟。第一次執行push時,提示了賬戶的登入操作。但更換新賬戶再次push時,並沒有再次登入的提示??喵喵喵??

    也就是說,我們還是按原賬戶的資訊再執行push操作,所以會報錯,拒絕訪問;

  解決方法:

明白了原因,接下來就是找解決方案了。說到這其實我是慚愧的,因為我最後成功時,並不知道是我當次操作生效了,還是之前的操作生效了;

    所以,我把兩種方案都寫出來,肯定有一種是生效的!

1、git config --global credential.helper cache

          設定push登入狀態儲存時間為15分鐘。這個大家都懂,就不接是原因了。我想說的是很多文章裡都提到了

      git config --global credential.helper "cache --timeout=3600"這個命令設定自定義時間,但是我實際測

      試沒起到效果。

    2、git remote rm origin與git remote add XXX

        重新設定origin值。通過git remote -v檢視的話,可以看到,其實新賬號的origin關聯是沒有錯誤的,畢竟add、commit操作都沒有問題。

      不過這裡的重新設定,也只是同樣的地址,貼上一遍,但這樣會不會就讓登入狀態失效了?我不知道(恩,加粗不知道)。

因為成功的

      時候,分不清是上一步的15分鐘到時間了,還是最後這一步操作生效了……但我又重新執行了一次刪除、新增,並沒有讓我再重新登入。所以猜測

      賬號登入狀態的重置跟這個沒啥關係,但是又並不絕對肯定,所以暫且作為一種方案寫上。

最後成功的話,會重新輸入賬號密碼,然後成功上傳到遠端倉庫,上個截圖,慶祝一下~

總結:

發現問題、分析問題、解決問題。

通觀我解決問題的整個過程,唯一的卡點就是不明白問題發生的原因,而當我意識到是push登入問題時,剩下的也就無非是等待15分鐘,然後不斷嘗試其他方法。所以,對於問題的解決,先找出痛點,是重中之重。最後,能不換賬號還是不換的好,將問題扼殺在搖籃中……。