???????前面兩章,我們已經(jīng)講述了Git的基本概念,以及在本地倉庫上的一些基本操作眼虱。本章我們將學(xué)習(xí)如何在遠(yuǎn)程倉庫上進(jìn)行操作,在GitHub上提交我們的第一行代碼席纽。
1. SSH
???????SSH? 納尼捏悬?沒錯,我第一次聽到這個名詞時润梯,也是嚇了一跳过牙。此SSH非彼SSH甥厦,下面聽我仔細(xì)說來。
你擁有了一個 GitHub 賬號之后寇钉,就可以自由的 clone 或者下載其他項目刀疙,也可以創(chuàng)建自己的項目,但是你沒法提交代碼扫倡。仔細(xì)想想也知道谦秧,肯定不可能隨意就能提交代碼的,如果隨意可以提交代碼镊辕,那么 GitHub 上的項目豈不亂了套了油够,所以提交代碼之前一定是需要某種授權(quán)的,而 GitHub 上一般都是基于 SSH 授權(quán)的征懈。
那么什么是 SSH 呢石咬? 簡單點說,SSH是一種網(wǎng)絡(luò)協(xié)議卖哎,用于計算機(jī)之間的加密登錄鬼悠。目前是每一臺 Linux 電腦的標(biāo)準(zhǔn)配置】髂龋總結(jié)一下就是:SSH(Secure Shell)是一種加密的網(wǎng)絡(luò)傳輸協(xié)議焕窝,常用于遠(yuǎn)程登陸與遠(yuǎn)程文件傳輸。使用SSH能有效避免數(shù)據(jù)在傳輸過程中被竊取篡改维贺。SSH可以采用密碼方式登陸遠(yuǎn)程它掂,也可以使用公鑰私鑰自動登陸。而大多數(shù) Git 服務(wù)器都會選擇使用 SSH 公鑰來進(jìn)行授權(quán)溯泣,所以想要在 GitHub 提交代碼的第一步就是要先添加 SSH key 配置虐秋。
2. 生成SSH key
???????Linux 與 Mac 都是默認(rèn)安裝了 SSH ,而 Windows 系統(tǒng)安裝了 Git Bash 應(yīng)該也是帶了 SSH的垃沦。大家可以在終端(win下在 Git Bash 里)輸入 ssh 如果出現(xiàn)以下提示證明你本機(jī)已經(jīng)安裝 SSH客给, 否則請搜索自行安裝下。
緊接著輸入 ssh-keygen -t rsa -C"郵箱"肢簿,什么意思呢靶剑?就是指定 rsa 算法生成密鑰。如果你出現(xiàn)下面的情況:
哥們別急池充,你沒有看清我的命令桩引,注意:ssh-keygen -t rsa -C"郵箱"的ssh和-key之間是沒有空格的,要留心額收夸!
接著連續(xù)四個回車鍵(有人說三個坑匠,反正我是四個;不需要輸入密碼)咱圆,然后就會生成兩個文件 id_rsa 和 id_rsa.pub 笛辟,而 id_rsa 是密鑰,id_rsa.pub 就是公鑰序苏。
這兩文件默認(rèn)分別在如下目錄里生成:
C:\Users\yucheng.HOME.ssh\id_rsa
C:\Users\yucheng.HOME.ssh\id_rsa.pub
當(dāng)然下面的是我的電腦手幢,你需要根據(jù)你的情況找:
接下來要做的是把 id_rsa.pub 的內(nèi)容添加到 GitHub 上,這樣你本地的 id_rsa 密鑰跟 GitHub上的 id_rsa.pub 公鑰進(jìn)行配對忱详,授權(quán)成功才可以提交代碼围来。
3. GitHub 上添加 SSH key
第一步:登錄GitHub后,切換到setting頁面:
第二步:點擊最左側(cè) SSH and GPG keys :
第三步:點擊右上角的 New SSH key 按鈕:
第四步:打開 id_rsa.pub文件:
這里提醒下匈睁,怎么查看 id_rsa.pub 文件的內(nèi)容监透?
Linux/Mac 用戶執(zhí)行以下命令:
cd ~/.ssh
cat id_rsa.pub
Windows用戶,設(shè)置顯示隱藏文件航唆,可以使用 EditPlus 或者 Sublime 打開復(fù)制就行了胀蛮。
第五步:點擊Add SSH Key,會進(jìn)入下面界面:
第六步:確認(rèn)密碼(密碼即你GitHub賬戶的密碼)糯钙,確認(rèn)后會進(jìn)入下面界面:
第七步:命令窗口輸入 ssh -T git@github.com 進(jìn)行測試:
如果第一次進(jìn)行此操作會出現(xiàn)下面的提示粪狼,直接輸入yes:
若不是第一次操作,則會出現(xiàn)下面的界面任岸,那么恭喜你再榄,你已經(jīng)添加成功了。
4. Push & Pull
在提交代碼之前我們先要了解兩個命令享潜,也是上次的文章沒有介紹的困鸥,因為這兩個命令需要跟遠(yuǎn)程倉庫配合。
Push :直譯過來就是「推」的意思剑按,什么意思呢疾就?如果你本地代碼有更新了,那么就需要把
本地代碼推到遠(yuǎn)程倉庫吕座,這樣本地倉庫跟遠(yuǎn)程倉庫就可以保持同步了虐译。
代碼示例:
git push origin master
意思就是把本地代碼推到遠(yuǎn)程 master 分支。
Pull:直譯過來就是「拉」的意思吴趴,如果別人提交代碼到遠(yuǎn)程倉庫漆诽,這個時候你需要把遠(yuǎn)程倉庫的最新代碼拉下來,然后保證兩端代碼的同步锣枝。
代碼示例:
git pull origin master
意思就是把遠(yuǎn)程最新的代碼更新到本地厢拭。一般我們在 push 之前都會先 pull ,這樣不容易沖突撇叁。
5. 提交代碼
添加 SSH key 成功之后供鸠,我們就有權(quán)限向 GitHub 上我們自己的項目提交代碼了,而提交代碼有兩種方法:
第一種情況:Clone自己的項目
我們本地的項目是從遠(yuǎn)程倉庫下載下來的陨闹,并時刻與其保持著同步更新楞捂,這樣二者之間的差異不是很大薄坏,適合用下面的方式提交代碼。
Clone自己的項目 我們以我在 GitHub 上創(chuàng)建的 test 項目為例寨闹,執(zhí)行如下命令:
git clone git@github.com:stormzhang/test.git
那么如何獲取我們項目test在GitHub上的地址呢胶坠?
這樣就把 test 項目 clone 到了本地,你可以把 clone 命令理解為高級點的復(fù)制繁堡,這個時候該項目本身就已經(jīng)是一個git 倉庫了沈善,不需要執(zhí)行 git init 進(jìn)行初始化,而且甚至都已經(jīng)關(guān)聯(lián)好了遠(yuǎn)程倉庫椭蹄,我們只需要在這個 test 目錄下任意修改或者添加文件闻牡,然后進(jìn)行 commit ,之后就可以執(zhí)行:
git push origin master
或者
git push
如下圖所示:
進(jìn)行代碼提交绳矩,這種是最簡單方便的一種方式罩润。
第二種方式:關(guān)聯(lián)本地已有項目
如果我們本地已經(jīng)有一個完整的 git 倉庫,并且已經(jīng)進(jìn)行了很多次 commit埋酬,這個時候第一種方法就不適合了哨啃。
假設(shè)我們本地有個 test2 的項目,我們需要的是在 GitHub 上建一個 test3的項目写妥,然后把本地test2 上的所有代碼 commit 記錄提交到 GitHub 上的 test3 項目拳球。
第一步:就是在 GitHub 上建一個 test3 項目,這個想必大家都會了珍特,就不用多講了祝峻。
第三步:把本地 test2 項目與 GitHub 上的 test3 項目進(jìn)行關(guān)聯(lián),切換到 test2 目錄扎筒,執(zhí)行如下命令:
git remote add myorigin git@github.com:yucheng1994/test3.git
什么意思呢莱找?就是添加一個遠(yuǎn)程倉庫,他的地址是git@github.com:yucheng1994/test3.git 嗜桌,而 origin 是給這個項目的遠(yuǎn)程倉庫起的名字奥溺,是的,名字你可以隨便取骨宠,只不過大家公認(rèn)的只有一個遠(yuǎn)程倉庫時名字就是 origin 浮定,為什么要給遠(yuǎn)程倉庫取名字?因為我們可能一個項目有多個遠(yuǎn)程倉庫层亿?比如 GitHub 一個桦卒,比如公司一個,這樣的話提交到不同的遠(yuǎn)程倉庫就需要指定不同的倉庫名字了匿又。
查看我們當(dāng)前項目有哪些遠(yuǎn)程倉庫可以執(zhí)行如下命令:
git remote -v
接下來方灾,我們本地的倉庫就可以向遠(yuǎn)程倉庫進(jìn)行代碼提交了:
git push myorigin master
就是默認(rèn)向 GitHub 上的 test3 目錄提交了代碼,而這個代碼是在 master 分支碌更。當(dāng)然你可以提交到指定的分支裕偿,這個之后的文章再詳細(xì)講解洞慎。
那么到底是啥原因呢蔫巩?又該如何解決呢?
原因:遠(yuǎn)程倉庫中含有本地倉庫項目所沒有的README.md文件
解決方案:對項目進(jìn)行合并快压,輸入命令:
git pull --rebase myorigin master
詳細(xì)操作請見Git--常見問題s--如何解決failed to push some refs to git
解決上述問題之后圆仔,我們就可以成功的將本地的項目提交到遠(yuǎn)程倉庫中了。
到這里你就成功的向遠(yuǎn)程倉庫提交了代碼蔫劣!你會了嗎
6.總結(jié)
???????通過本文的介紹坪郭,大家終于可以成功的向 GitHub 提交代碼了,但是相信大家還有很多疑問脉幢,比如關(guān)于分支的理解與使用歪沃,比如 git 的其他一些有用的配置,比如怎么向一些開源項目貢獻(xiàn)代碼嫌松,發(fā)起 Pull Request 等沪曙,之后的系列文章會逐一進(jìn)行介紹,敬請期待萎羔。