最近想要使用自己的GitHub搭建Hexo博客喇澡,同時(shí)還要使用工作的GitHub開(kāi)發(fā)項(xiàng)目,所以在網(wǎng)上找尋了一些文章,在此將自己的搭建過(guò)程記錄一下脖捻。
前期工作
兩個(gè)GitHub賬號(hào)(假設(shè)兩個(gè)賬號(hào)為one,two)
取消Git全局設(shè)置
$git config --global --unset user.name
$git config --global --unset user.email
SSH配置
生成id_rsa
私鑰夺溢,id_rsa.pub
公鑰论巍。one可以直接回車(chē),默認(rèn)生成 id_rsa 和 id_rsa.pub 风响。
$ssh-keygen -t rsa -C "one@xx.com"
添加two會(huì)出現(xiàn)提示輸入文件名嘉汰,輸入與默認(rèn)配置不一樣的文件名,如:id_rsa_two状勤。
$cd ~/.ssh
$ssh-keygen -t rsa -C "two@126.com" # 之后會(huì)提示輸入文件名
GitHub添加公鑰 id_rsa.pub 鞋怀、 id_rsa_two.pub,分別登陸one,two的賬號(hào)持搜,在 Account Settings 的 SSH Keys 里密似,點(diǎn) Add SSH Keys
,將公鑰(.pub文件)中的內(nèi)容粘貼到 Key 中葫盼,并輸入 Title辛友。
添加 ssh Key
$ssh-add ~/.ssh/id_rsa
$ssh-add ~/.ssh/id_rsa_two
可以在添加前使用下面命令刪除所有的 key
$ssh-add -D
最后可以通過(guò)下面命令,查看 key 的設(shè)置
$ssh-add -l
修改ssh config文件
$cd ~/.ssh/
$touch config
打開(kāi) .ssh 文件夾下的 config
文件剪返,進(jìn)行配置
# default
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# two
Host two.github.com # 前綴名可以任意設(shè)置
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_two
- 這里必須采用這樣的方式設(shè)置废累,否則 push 時(shí)會(huì)出現(xiàn)以下錯(cuò)誤:
ERROR: Permission to two/two.github.com.git denied to one.
簡(jiǎn)單分析下原因,我們可以發(fā)現(xiàn) ssh 客戶(hù)端是通過(guò)類(lèi)似:
git@github.com:one/one.github.com.git
這樣的 Git 地址中的 User 和 Host 來(lái)識(shí)別使用哪個(gè)本地私鑰的脱盲。
很明顯邑滨,如果 User 和 Host 始終為 git 和 github.com,那么就只能使用一個(gè)私鑰钱反。
所以需要上面的方式配置掖看,每個(gè)賬號(hào)使用了自己的 Host匣距,每個(gè) Host 的域名做 CNAME 解析到 github.com,這樣 ssh 在連接時(shí)就可以區(qū)別不同的賬號(hào)了哎壳。
$ssh -T git@github.com # 測(cè)試one ssh連接
# Hi ***! You've successfully authenticated, but GitHub does not provide shell access.
$ssh -T git@two.github.com # 測(cè)試two ssh連接
# Hi ***! You've successfully authenticated, but GitHub does not provide shell access.
但是這樣還沒(méi)有完毅待,下面還有關(guān)聯(lián)的設(shè)置。
在Git項(xiàng)目中配置賬號(hào)關(guān)聯(lián)
可以用 git init
或者 git clone
創(chuàng)建本地項(xiàng)目
分別在one和two的git項(xiàng)目目錄下归榕,使用下面的命令設(shè)置名字和郵箱
$git config user.name "__name__" # __name__ 例如 one
$git config user.email "__email__" # __email__ 例如 one@126.com
注意:由于我不知道Hexo怎樣配置 局部的config尸红,所以,我將two的config使用全局刹泄,而工作目錄配置局部外里。
$git config --global user.name "__name__" # __name__ 例如 two
$git config --global user.email "__email__" # __email__ 例如 two@126.com
查看git項(xiàng)目的配置
$git config --list
查看 one 的 remote.origin.url=git@github.com:one/one.github.com.git
查看 two 的 remote.origin.url=git@github.com:two/two.github.com.git
由于 one 使用的是默認(rèn)的 Host ,所以不需要修改特石,但是 two 使用的是 two.github.com 盅蝗,則需要進(jìn)行修改
$git remote rm origin
$git remote add origin git@two.github.com:two/two.github.com.git
我在Hexo中的配置(使用two賬號(hào))
deploy:
type: git
repo: git@two.github.com:two/two.github.io.git
branch: master
上傳更改
上面所有的設(shè)置無(wú)誤后,可以修改代碼姆蘸,然后上傳了墩莫。
$git add -A
$git commit -m "your comments"
$git push
如果遇到warning
warning: push.default is unset; its implicit value is changing in Git 2.0 from ‘matching’ to ‘simple’. To squelch this messageand maintain the current behavior after the default changes, use…
推薦使用
git config --global push.default simple
好了,這就是今天的分享逞敷,最近也會(huì)持續(xù)更新git相關(guān)系列贼穆,謝謝大家的支持