code小生,一個(gè)專注 Android 領(lǐng)域的技術(shù)平臺(tái) 公眾號(hào)回復(fù) Android 加入我的安卓技術(shù)群 作者:江子濤Tesla 鏈接:https://www.jianshu.com/p/089861329c1a 聲明:本文來(lái)自江子濤Tesla 投稿,轉(zhuǎn)發(fā)等請(qǐng)聯(lián)系原作者授權(quán)
前言介紹:很多時(shí)候,我們都需要去在電腦上去同時(shí)使用gitlab和github,但是這樣會(huì)很容易造成沖突,看了很多文章去解決這個(gè)問(wèn)題,但是我發(fā)現(xiàn)大家的方式各有不同,導(dǎo)致看博客的人感覺(jué)很困惑,于是我嘗試一步一步引導(dǎo)大家用三種方式去真正的實(shí)現(xiàn)在一臺(tái)PC上去同時(shí)使用gitlab和github 基本要點(diǎn)于我而言,提交公司的代碼比較多,所以我配置global為公司(gitlab)使用時(shí)候提交的具體信息,配置local為個(gè)人(github)使用的具體信息 global:全局配置(用戶名和郵箱) local:當(dāng)前項(xiàng)目的配置(用戶名和郵箱),如果你沒(méi)有配置,提交代碼時(shí)候個(gè)人信息是global配置的信息。需要注意的是配置local的時(shí)候,需要cd指令打開具體項(xiàng)目文件夾,再去配置local
需要說(shuō)明的是這兩個(gè)配置并沒(méi)有什么大的用處,僅僅只是為了在提交代碼的時(shí)候,標(biāo)明到底是哪位同學(xué)上傳的代碼罷了 類似于如下圖:
//查看全局配置(global) git config --global --list
//設(shè)置global的基本信息,用戶名和郵箱 git config --global user.name AllenJ git config --global user.name jiang@gamil.com
//查看當(dāng)前項(xiàng)目的配置(local) git config --local --list
//設(shè)置local的基本信息,用戶名和郵箱 git config --global user.name jzt git config --global user.name jzt@qq.com
三種方式方式一: //配置global git config --global user.name AllenJ git config --global user.name jiang@gamil.com
//打開具體需要克隆的文件,克隆項(xiàng)目到該文件夾內(nèi) cd C/MyBlog git clone https://github.com/jzt-Tesla/FileRecyclerViewDemo.git
//配置該項(xiàng)目的local git config --global user.name jzt git config --global user.name jzt@qq.com
//自己手動(dòng)測(cè)試一下,隨便改一下里面的文件內(nèi)容
//git命令,提交項(xiàng)目到github cd C/MyBlog/FileRecyclerViewDemo (克隆的具體項(xiàng)目) git status git add 具體改變的文件 git commit -m'注釋' git push
注意:提交的時(shí)候,會(huì)彈出一個(gè)驗(yàn)證,輸入github賬號(hào)和密碼就OK了 ~ 方式二&方式三: 相同步驟: 首先分別生成gitlab和github網(wǎng)站的密鑰文件,一共兩對(duì)四個(gè),公鑰和私鑰。
//gitlab密鑰 $ ssh-keygen -t rsa -C "jiang@gmail" //github密鑰 $ ssh-keygen -t rsa -C "jzt@qq.com" -f ~/.ssh/github_id-rsa
-t 密鑰類型,默認(rèn)是 rsa加密 -C 注釋文字,比如用戶郵箱 -f 密鑰文件位置及文件名
將生成的公鑰(.pub文件)粘貼到github/gitlab的SSH地址里面
這時(shí)候你需要測(cè)試一下是否能夠連的通gitlab/github
ssh -T git@你的地址
//例如如下
ssh -T git@192.168.3.110
ssh -T git@github.com
-當(dāng)測(cè)試的時(shí)候會(huì)發(fā)生圖下所示,測(cè)試生成id_rsa密鑰的地址是正常的,而生成github_id_rsa的會(huì) permission denied(publickey) 意味著無(wú)法連通github
不同步驟: 方式二:造成上述情況的原因是,默認(rèn)是使用id_rsa密鑰的,如果要使用新密鑰,需要將新密鑰添加到agent里面去,而且遺憾的是這是臨時(shí)的,下次使用同樣需要再次添加。 ssh-agent bash ssh-add ~/.ssh/github_id_rsa
這個(gè)時(shí)候就可以測(cè)試github了,發(fā)現(xiàn)是完全OK的。
剩下的步驟和Https方式一致,無(wú)非是設(shè)置global、local、克隆,推送,提交項(xiàng)目
方式三://生成config ssh touch ~/.ssh/config
Host gitlab
HostName 192.168.3.110
IdentityFile ~/.ssh/id_rsa
Host github
HostName github.com
IdentityFile ~/.ssh/github_id_rsa
注意的是,大家配置完成后進(jìn)行測(cè)試,就不是像方法二 git -T git@具體地址,而是git -T git@Host的值 ,也就是config里面具體的Host,因?yàn)橛信渲梦募onfig,最后會(huì)指向具體的密鑰,這樣就OK了 你可能會(huì)出現(xiàn)下圖的config配置問(wèn)題,我當(dāng)時(shí)被這個(gè)搞了好久,參考很多人說(shuō)的,這個(gè)是空格問(wèn)題 ------>管理git生成的多個(gè)ssh key ,但是我怎么搞都不行,最后用markdown的工具打開,刪除空格和每行之間必須用回車不然也會(huì)出錯(cuò)(開始用了txt文件打開,無(wú)論怎么都搞不好),每行之間是回車,但是你用txt打開卻是空格,所以大家要小心了,實(shí)在不行的,也可以參考我后面的github地址,大家自行下載。
最后的成功的結(jié)果圖:
剩下的步驟和Https方式一致,無(wú)非是設(shè)置global、local、克隆,推送,提交項(xiàng)目
值得注意的一點(diǎn)是: 當(dāng)我們克隆項(xiàng)目到本地的時(shí)候,也許會(huì)出現(xiàn)第一個(gè)里面的錯(cuò)誤:
說(shuō)我們沒(méi)有權(quán)限去克隆,但是明明都已經(jīng)與github服務(wù)器測(cè)試成功了,為什么還是會(huì)出現(xiàn)沒(méi)有權(quán)限的錯(cuò)誤呢?可以觀察到: 第一個(gè)clone的地址是:git clone git@github.com:jzt-Tesla/FileRecyclerViewDemo.git 第二個(gè)clone的地址是:git clone git@github:jzt-Tesla/FileRecyclerViewDemo.git 第一個(gè)地址是直接從github里面復(fù)制過(guò)來(lái)的,錯(cuò)誤在于我們?cè)O(shè)置了config文件里面的github的Host為github,而不是github.com,從而導(dǎo)致了第一種克隆方式無(wú)法找到github密鑰的地址,所以也就沒(méi)有權(quán)限了。修改成Host里面的github,使用第二張克隆就可以成功的將項(xiàng)目clone到本地了。
Others$ git config --global --replace-all user.email "輸入你的郵箱" $ git config --global --replace-all user.name "輸入你的用戶名"
// 提交未跟蹤、修改和刪除的文件。 git add --all
//提交未跟蹤和修改的文件,但不能進(jìn)行文件的刪除。 git add .
git remote -v
錯(cuò)誤總結(jié):總結(jié)來(lái)說(shuō)config文件:
|