在處理這個問題之前,查詢了一些資料,當(dāng)時只是單純的認(rèn)為幾句代碼就搞定了,不過,在實踐的過程中碰了一鼻子灰,經(jīng)過努力,配置成功之后,總結(jié)如下實現(xiàn)步驟(我的電腦是先配置的公司gitlab,后配置的個人github).
1: 剛開始的時候,我是根據(jù)在Mac下創(chuàng)建github并上傳本地代碼的思路去操作的,具體代碼如下:
//初始化本地倉庫
git init
//將代碼放到提交區(qū)
git add .
//提交到要本地倉庫
git commit -am “first commit”
//關(guān)聯(lián)遠(yuǎn)程倉庫并建了一個名叫:originMine的別名
git remote add originMine git@github.com:FuDong/test.git
如果只是一臺電腦只存在一個github賬戶,上面的簡單幾步是沒有問題的,不過一臺電腦兩個github賬戶共存,在git push的時候,就會犯難了,到底是傳到哪個賬戶???
2: 重新設(shè)置一個公司gitlab的賬戶信息(這一步參考用的,可以不用重新配置)
git config --global user.name "gitlab用戶名"
git config --global user.email "gitlab郵箱"
3: 每個賬戶, 我都是通過關(guān)聯(lián)ssh key來操作的, 公司賬戶之前配置過了,具體方法如下.
ssh-keygen -t rsa -C "公司的gitlab賬戶"
但是為了區(qū)分兩個賬戶的ssh key,不覆蓋之前的id_rsa,所以給個人賬戶的ssh key 重新起了個名字
ssh-keygen -t rsa -C "個人的github郵箱" -f ~/.ssh/github_rsa
//進(jìn)入ssh文件目錄
StafftekiiMac:~ Staff$ cd ~/.ssh
//配置的ssh key文件
StafftekiiMac:.ssh Staff$ ls
config github_rsa.pub id_rsa.pub
github_rsa id_rsa known_hosts
//拷貝密鑰
StafftekiiMac:.ssh Staff$ cat github_rsa.pub
ssh-rsa AAAT0sty7U9uueyjumof2HJYZp7NeBCz2TBQ4z4NM5kE9XB 1341499999@qq.com
拿到密鑰ssh key之后,拷貝到自己的github賬戶進(jìn)行配置

ssh_key.png
4: 在ssh文件目錄下,會自動生成一個config目錄(.ssh/config),進(jìn)行配置:
可以通過vi .ssh/config的方式進(jìn)行編輯,也可以直接右鍵進(jìn)入文本編輯
Host gitlab
HostName github.lab //公司的代碼倉庫服務(wù)器地址
User 用戶名稱
IdentityFile ~/.ssh/id_rsa
Host github.com //個人的代碼倉庫服務(wù)器地址
HostName github.com
User 用戶名稱
IdentityFile ~/.ssh/github_rsa
如果不知道倉庫服務(wù)器地址,可參考下圖紅框部分

服務(wù)器地址.png
5: 配置到這一步的時候,可以測試一下ssh 是否連通了
StafftekiiMac:~ Staff$ ssh -T git@github.lab
Welcome to GitLab, 用戶名!
StafftekiiMac:~ Staff$ ssh -T git@github.com
Hi 用戶名! You've successfully authenticated, but GitHub does not provide shell access.
6: 進(jìn)一步的配置步驟
StafftekiiMac:test Staff$ git init
StafftekiiMac:test Staff$ git commit -am 'first commit'
StafftekiiMac:test Staff$ git status
StafftekiiMac:test Staff$ git remote add origin git@github.com:用戶名/test.git
StafftekiiMac:test Staff$ git push -u origin master
到這一步的時候,出現(xiàn)如下問題
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:用戶名/test.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解決方法:
1: 進(jìn)行push前先將遠(yuǎn)程倉庫pull到本地倉庫
$ git pull origin master //git pull --rebase origin master
$ git push -u origin master
2: 強(qiáng)制push本地倉庫到遠(yuǎn)程 (這種情況不會進(jìn)行merge, 強(qiáng)制push后遠(yuǎn)程文件可能會丟失 不建議使用此方法)
$ git push -u origin master -f
3: 避開解決沖突, 將本地文件暫時提交到遠(yuǎn)程新建的分支中
$ git branch [name]
# 創(chuàng)建完branch后, 再進(jìn)行push
$ git push -u origin [name]
通過上面的步驟,當(dāng)我們再次刷新github界面的時候,本地代碼就上傳成功了