咱們接着學習git,到目前爲止,咱們學習了
git init
git status
git add <file>
git commit (-m <describtion>)
git diff
git log
git rm <file>
git checkout -- <file>
git reset HEAD <file>
具體能夠到GIt本地相關操做(一)git本地相關操做(二)查看
接下來咱們繼續學習git基於本地倉庫與遠程倉庫交互的,相關操做java
生成密鑰
爲了保證遠程倉庫可以惟一識別一電腦主機的操做,同時保證咱們與遠程倉庫通訊的安全,咱們須要建立一個SSH key而且在git遠程倉庫中配置,咱們進入linux當前登陸的用戶目錄中,打開.ssh目錄查看是否有"id_rsa"和"id_rsa.pub",若沒有就執行如下的命令:linux
ssh-keygen -t rsa -C "example@mail.com"
這裏的郵箱也是隨意定義的,可是仍是建議有實際意義的,執行完成之後到「~/.ssh/」目錄下,能看到上述兩個文件,如圖:若是沒有看到說明執行上述命令不是以當前登陸的用戶權限執行的,在明確執行命令的權限後,到對應的用戶目錄下,就能看到,例如我雖然登陸了guest用戶,可是我執行的「sudo ssh-keygen」那麼就是root權限,所以文件就生成在root用戶目錄下的.ssh木有生成了密鑰文件
可是咱們但願執行sudo命令的時候,要在當前用戶的路徑下生成文件而不是在root用戶目錄下呢,咱們能夠執行如下命令來實現:
sudo ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_keygit
在遠程倉庫進行註冊
筆者使用的是開源中國提供的git服務,你們也能夠選擇其餘的,其操做大同小異。將「id_rsa.pub」公鑰中的內容複製 出來添加到遠程的git服務中去,具體操做以下圖所示:segmentfault
建立遠程倉庫安全
關聯遠程倉庫
在遠程倉庫獲取http協議的鏈接或是ssh協議的鏈接地址,如圖:
而後在本地倉庫進行關聯,使用「git remote add origin <遠程倉庫地址>」,如圖的具體操做:「git remote -vv」用來查看本地倉庫關聯遠程倉庫地址ssh
推送文件到遠程倉庫
目前本地倉庫是有文件的,可是遠程倉庫是空的,咱們須要將本地倉庫的文件推送到遠程倉庫上,這樣其餘人才能從遠程倉庫獲取到文件進行編輯和修改,實現協同工做的目的。
執行"git push -u origin master"命令,如圖:這張圖內容比較多,咱們一個一個來講:
首先,git push是將本地倉庫的數據push到遠程倉庫,-u的做用是本地倉庫第一次向遠程倉庫推送數據時簡歷關聯,origin是指咱們在執行「git remote add origin <遠程倉庫地址>"之後orgin就表明了遠程倉庫,而master則是值遠程倉庫的分支名稱,目前遠程倉庫的分支只有一個默認分支master
而後,咱們執行"git push -u origin master"會有一些朋友出現上圖上半部分展現的錯誤信息,我查了相關資料,意思就是說咱們在新建遠程倉庫之後,遠程倉庫會默認建立一些文件,而這些文件本地倉庫沒有的,這就藏成了。本地倉庫和遠程倉庫都有彼此沒有的文件,解決這種情況有兩種方案:
強推覆蓋遠程倉庫已有的文件
本地倉庫拉取遠程倉庫的文件,本地實現合併而後再push
本文爲了省事使用了第一種方案,實際開發過程當中推薦第二種方案,相關文章連接:https://my.oschina.net/unique...學習
提交編輯到遠程倉庫
在第5小節的時候,咱們已經將本地倉庫與遠程倉庫的數據實現同步,下面咱們在本地修改一下文件而後再把修改的內容提交到遠程倉庫。基於以前已經與遠程倉庫創建了關聯,因此此次同步只須要執行"git push"命令便可spa
二.總結.net
ssh key是git遠程倉庫惟一區分本地倉庫主機的標識也是安全通訊的保證code
git remote add origin <遠程倉庫地址>本地倉庫管理遠程倉庫,而且在本地能夠經過orgin來標識, <遠程倉庫地址>能夠是ssh協議地址或是http協議地址
git remote -vv查看本地倉庫關聯的遠程倉庫地址信息
git push origin 分支名稱將本地倉庫的文件推送到遠程倉庫,-u表示將本地倉庫與遠程倉庫進行管理,僅在第一push時使用,-f表示強推,orgin在這裏的表明的含義要明確,分支名稱,就是咱們提交的數據是推送到遠程倉庫的具體分支上
當本地git文件信息與遠程倉庫文件衝突時的兩種解決方案:
強推
本地同步遠程倉庫數據,本地解決再push
實際中推薦第二種
git clone複製遠程倉庫的文件到本地目錄中