天天看點

Git使用小技巧之免密登入修改前修改後

使用Git的過程中發現,每次向遠端倉庫git push推送代碼的時候都需要輸入賬号密碼。做為一個程式員,多多少少都會有偷懶的思維。那麼如何才能避免每次都要輸入賬号密碼呢?一種是讓Git記住密碼,第二種就是使用SSH協定推送。

Git記住密碼

第一種方式–記住密碼。

這種方式隻需要設定credential.helper = store配置就可以了。那麼怎麼設定呢?很簡單一行指令就可以搞定。

git config --global credential.helper store

執行完這句指令後,我們會發現在使用者主目錄下的.git/config檔案裡面會多了一項配置。

[credential]

helper = store

然後我們發現我隻需要在第一次推送的時候輸入賬号密碼,第二次往後都不需要再輸入密碼了。–global的配置是對該使用者全局生效的,如果你隻想目前項目生效,在配置的時候隻需要去掉–global即可。當然了,如果你不想執行指令,直接Copy上面配置的内容到你的.git/config檔案裡面也是可以的。

SSH協定方式

小代還發現一種可以實作無需密碼就往遠端推送代碼的方式,那就是配置SSH KEY。那麼如何配置呢?

1.首先,我們需要在我們本地的機器上生成一對ssh的公私鑰。

[email protected]:~/git-test# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:iik07xiElU3zph5Gv3VbwSUEhRX9vpHhz1ZaRegndzw [email protected]

The key’s randomart image is:

±–[RSA 2048]----+

| o .**o… |

| + o … oo .|

| o o o o. + |

| o . + .oEB|

|. + + . S . . .=*|

| o = + + . o ++|

| o = o . +=|

| = …+|

| . . . |

±—[SHA256]-----+

中間的Enter passphrase是讓你輸入密鑰的通路密碼,如果不需要的話直接回車即可。公私鑰對預設生成在使用者主目錄下的.ssh/目錄下。

2.第二步我們需要将公鑰複制到Github上。在使用者設定界面有個SSH and GPG keys,我們點選它并選擇建立一個SSH key,然後将公鑰複制進去即可。在Github上添加SSH公鑰的詳細操作步驟可以參考官網的教程。

Git使用小技巧之免密登入修改前修改後

3.這一步我們需要修改本地倉庫中的遠端倉庫的位址,其實我們隻需将.git/config檔案中遠端倉庫的位址由http的位址換成ssh的位址即可。(PS:這兩種協定的位址都可以在Github上擷取。)

修改前

[remote “origin”]

url = https://github.com/ganchaoyang/git-test.git

fetch = +refs/heads/:refs/remotes/origin/

修改後

[remote “origin”]

url = [email protected]:ganchaoyang/git-test.git

fetch = +refs/heads/:refs/remotes/origin/

4.到這一步我們已經完成了SSH的配置,隻需要推送一下代碼測試一下即可。你會發現真的不需要密碼了。

$ git push

Enumerating objects: 5, done.

Counting objects: 100% (5/5), done.

Writing objects: 100% (3/3), 259 bytes | 259.00 KiB/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To github.com:ganchaoyang/git-test.git

e8bcffc…6e1e8a9 master -> master