git登錄相關操作梳理
本文主要基于 Linux/Mac ,Windows下未經測試,不過估計差不多,在 git bash 內操作即可。
創建ssh key并關聯github等賬號
因為本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密傳輸的,GitHub需要識別是否是你推送,GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送,所以需要配置ssh key。
ssh-keygen -t rsa -C {"YOUR_EMAIL"}
輸入命令會提示輸入文件名,沒有特別需求的話不需要特別輸入,用默認的即可,即直接一頓回車。之后在 ~/.ssh
下得到兩個文件:id_rsa
和 id_rsa.pub
,到 github 或者 gitlab 等的個人設置界面,添加 ssh key,把 id_rsa.pub
中的內容復制進去即可,一般這一步會需要輸入密碼。
同機器多用戶
有時候我們會有在同一臺機器上登錄多個 git 賬戶的需求,比如要同時登錄我們個人的 github 賬號,和在公司的 gitlab 賬號。
配置 config 文件
編輯 ~/.ssh/config
文件,該文件內保存了我們 ssh 其他機器時的信息,和 ssh 連接 git 的信息。
# Default user
Host coding # host地址對應的別名,切換用戶使用該名稱
HostName xxx.xx.xx.xx # host地址 我這里填的是公司搭建的git倉庫的ip地址
User xiaofute1
IdentityFile ~/.ssh/id_rsa_default # ssh-key文件地址 默認只會讀取id_rsa# second user
Host github
HostName github.com
User xiaofute2
IdentityFile ~/.ssh/id_rsa_github
切換用戶
這里就用到了配置文件中的host對應的字段:
ssh -T git@github
輸出類似如下信息則表示成功:
Hi xiaofute2! You've successfully authenticated, but GitHub
does not provide shell access.
驗證出錯
驗證過程中出現 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
刪除 known_hosts 文件。執行以下命令
ssh -T -v git@xxx.xx.xx.xx
設置username和email
這里設置的 username 和 email 就是我們每次 commit 記錄的用戶信息。注意這里是不需要密碼的。驗證我們的用戶身份是通過上面的 ssh key。
全局
git config --global user.name "YOUR_USRE_NAME"
git config --global user.enail "YOUR_EMAIL"
可以用
git config --list
來查看配置信息。
本地
本地倉庫文件夾下配置用戶名 會在當前倉庫中提交試用該用戶信息提交,覆蓋全局的配置、
git config user.name "YOUR_USER_NAME"
git config user.email "YOUR_EMAIL"
由于我們全局配置的為default user的用戶名和郵箱,在github上的commits history中會link不到用戶,所以每次要在 github 上 commit 內容時,需要在 git init 后需要配置該本地局部倉庫的用戶信息。
git設置用戶名密碼
我們剛才提到,上面設置git用戶名/郵箱是不需要密碼的。如果我們的 git 源在每次操作都需要你輸入用戶名/密碼驗證,我們依然需要每次設置,那么該如何辦呢?
這里主要是修改某個項目下的 .git/config
文件:
[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true
[remote "origin"]url = https://github.com/Miss-you/kernel-netfilter-sample-code.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]remote = originmerge = refs/heads/master
# 上面是一般的本地倉庫的內容,如果想要保存用戶名密碼,添加以下兩行
[credential]helper = store
再使用 git config --list
查看已設配置
feiqianyousadeMacBook-Pro:xt_GTPU yousa$ git config --list
core.excludesfile=/Users/yousa/.gitignore_global
user.name=Miss-you
user.email=snowfly1993@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.origin.url=https://github.com/Miss-you/xt_GTPU.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
Ref:
git命令行登陸github進行操作
git多用戶配置(多用戶&公司/個人)
git設置用戶名密碼