Github新手之路(全過程)(站在前輩的肩膀上的總結)

全文約9300字,閱讀大概需要20分鐘(閱讀速度按500字/分鐘計算)

目錄

一、「初識GitHub」

1.Git與GitHub的區別

2.GitHub爲什麼是全球最大的開源社區?

3.GitHub有什麼用?

二、「加入GitHub」

前言:GitHub需要翻牆嗎?

1.註冊Github。Github官網

去官網「Sign up」一個賬號!

填好你的用戶名、郵箱

2.認識GitHub

3.Github主頁

4.設置你的Github

5.Github基本概念

Repository

Issue

Star

Fork

Pull Request

Watch

Gist

6.創建自己的遠程倉庫(Repository)!

三、「Git速成」

1、什麼是Git?

2、Git安裝

3、如何學習Git

4、Git命令列表

5、Git具體命令

四、「向GitHub提交代碼」

1.SSH

2.生成SSH key

3.GitHub上添加SSH key

4.Push & Pull

5.提交代碼的兩種類型

(1)Clone自己的項目

(2)關聯本地已有項目

6.總結


我曾在GitHub上摸爬滾打了很久,還是撞得鼻青臉腫,主要是對於其官網英文頁面不是很適應,對裏面的很多新概念似懂非懂,網上的教程比較混亂,不成體系。偶然的一次機會,我看到了大佬「stormzhang」寫的GitHub入門文章(stormzhang是其通用網名,知乎專欄同名,微信公衆號同名),個人覺得其內容自成體系,對新手友好,因此全文拜讀。

目前 stormzhang 已經把他的文章整理爲電子書,關注其微信公衆號回覆「GitHub」即可下載

這篇博客是我整理大佬的文章,結合自己的情況寫下的總結。

首先列出自己參考的文章鏈接:

首先是「stormzhang」的系列的第一篇知乎專欄文章初識GitHub。

然後是他的文章系列的第二篇加入GitHub。這篇文章尾部提供了Markdown語法的新手指南。

系列的第三篇Git速成。注意這篇文章中的幾個平臺Git安裝方法。需要尤其熟悉其中的Git命令列表部分。

這裏是他的一篇終端軟件的小介紹,不重要,可以看看,終端小介紹。

系列第四篇向GitHub提交代碼


下面是自己對這位作者(stormzhang)的文章的進一步總結,親手敲出了每一條命令和每一個字(畢竟自己把知識點敲出來印象更爲深刻,也爲了防止原作者刪了文章而找不到了,也爲了以後工作時的複習)。

一、「初識GitHub」

2008年4月10日,GitHub正式成立,地址是:GitHub官網

確切地說,它是一家公司,位於舊金山,創辦者:Chris Wanstrath,PJ Hyett和Tom PrestonWerner。

目前是全球最大的開源社區(已經被微軟收購,對於開源世界來說不是一個好消息)。

當初自己也看過廖雪峯的教程,總是看完就會忘記,自己動手敲,用輕鬆易懂的語言把它講出來,然後多加練習才能真的掌握。

 

1.Git與GitHub的區別

Git是一款免費的、開源的分佈式版本管理系統,由著名的Linux開發者Linus Torvalds開發。

之前比較流行的版本控制系統有SVN,而Git是新時代的產物,SVN現在來說有些落伍。

GitHub是一個平臺,提供基於Git的版本託管服務。

也就是說,現在GitHub上託管的所有項目代碼都是基於Git技術來進行版本控制的,即Git只是GitHub平臺上用來管理項目的一個工具而已。GitHub在發展過程中還有很多其他功能。

 

2.GitHub爲什麼是全球最大的開源社區?

全球頂級科技公司紛紛加入GitHub,並貢獻他們自己的項目代碼:

全球頂級開源項目優先選擇在GitHub上開源:

全球頂級編程大牛加入GitHub:

  •  還有被稱爲「Android之神」的JakeWhartongithub.com/JakeWharton。很多開源的庫都是出自他手。

 

其他不一一列舉,在Github上還有很多活躍的Google、阿里、微軟等大公司的員工,在這裏可以接觸到全球頂級大牛!

3.GitHub有什麼用?

 

  • 學習優秀的開源項目

開源社區流行一句話,「不要重複造輪子」,說的就是不要重複地做別人已經做過的工作。

因爲你現在想做的東西,有極大的概率已經有人實現了,而且實現的方式比你的好N倍。

其實正是因爲開源社區的貢獻,現在的軟件開發纔會越來越容易、效率越來越高,我們越來越能夠把我們的精力放在真正需要創造力的地方。

試想你在做項目的時候,如果每一塊模板都要自己去寫,比如網絡庫、圖片加載庫、ORM庫等,自己寫的好不好是一回事,時間與資源是很大的成本。

對於大公司來說,可能會選擇花費人力與資源去發明一套自己的輪子,但是對於大部分互聯網創業公司來說,時間就是一切,效率就是生命。

自己在使用開源項目的時候,可以學習他們優秀的設計思想、實現方式,這是最好的學習資料,是提示自己能力的絕佳方式!

  • 多人協作

這裏不僅僅是指團隊開發項目中的代碼協作,任何能夠通過多人協作的項目都可以藉助GitHub提升效率。

如果你要發起一個項目,比如翻譯一本書,覺得一個人的時間和精力不夠,那麼可以把這個項目放在GitHub上,讓有興趣的人蔘與進來,大家可以在任何時間任何地點爲此項目做貢獻,然後可以互相審覈、合併。

簡直不要太棒!

  • 搭建博客、個人網站或者公司官網

比如,現在有些博客是基於GitHub Pages來搭建,你可以隨心所欲定製自己的樣式,可以給自己的博客買一個逼格高的域名。

不需要忍受各大博客網站的約束與各式各樣的廣告了!

  • 寫作

如果你喜歡基於Markdown語法來寫作,並準備出版書籍,那麼GitHub和Gitbook就很適合你,尤其適合技術人!

  • 個人簡歷

如果你有一個活躍的GitHub賬號,上面有不錯的開源的項目,還經常給別的開源項目提問題,push代碼,那麼你找工作的時候就有巨大的優勢。

很多IT公司看重GitHub賬號,某種意義上GitHub可以算作是你的簡歷。而且不僅國內,很多國外的科技公司都會通過GitHub來尋找優秀的人才。

  • 其他

其實還有很多很多有趣的事情等待你去挖掘!

 


二、「加入GitHub」

 

前言:GitHub需要翻牆嗎?

不需要翻牆。印象中GitHub的訪問速度一直都是有些慢的,其實很正常,其公司在美國舊金山。GitHub影響力很大,每天都會被無數黑客攻擊,所以偶爾會有宕機無法訪問的時候,但是不會被封(不過2020年2-3月份期間經常上不去,可以百度查詢相關原因)。

接下來進入正文:

1.註冊Github。Github官網

去官網「Sign up」一個賬號,註冊頁面如下:

這個應該沒啥說的,需要填用戶名、郵箱、密碼,值得一提的用戶名請不要那麼隨便,最好取的這個名字就是你以後常用的用戶名了,也強烈建議你各大社交賬號都用一樣的用戶名,這樣識別度較高,而且這個用戶名以後在 GitHub 搭建博客的時候默認給你生成的博客地址就是 http://username.github.io ,所以給自己取個好點的用戶名吧。

比如我的是keneathguo。

 

填好用戶名、郵箱、密碼緊接着到這一步:

那麼這是什麼意思呢? GitHub賬戶有兩種,一種是公開的,這種是免費的,就是說你創建的項目是開放的,所有人都能看得到;另一種是私有的,這種是收費的,這種一般是很多企業在用GitHub的私有倉庫在託管自己的倉庫,這也是GitHub的一種盈利模式。

對於我們個人使用而言,直接默認選擇公開的就行了。

 

2.認識GitHub

註冊成功之後,來到GitHub的主頁面來。這裏使用「stormzhang」老哥的圖片來做說明:

但是咱們新註冊的賬號裏幾乎是一片空白,還沒有參與什麼項目,沒有關注的人,所以幾乎什麼都沒有,只有一個導航欄。

  • 導航欄:從左到右依次是「Github主頁按鈕」、「搜索框」、「PR」、「Issues」、「Gist」、(這些概念後面詳細說明)「消息提醒」、「創建項目按鈕」、「我的賬號相關」。

  • 我的Timeline:這部分就理解爲「我的關注」,就是你關注的人的活動會出現在這裏。比如如果你們關注我了,那麼以後我starfork了某些項目都會出現在你的時間線裏。

  • 我的項目:自己創建、參與、改造的項目,快捷訪問的入口。

 

3.Github主頁

點擊最右邊的「我的賬號相關」,再選擇 「Your profile」菜單進入你的個人Github主頁

還是以「stormzhang」的Github主頁爲例:

新用戶的主頁是一片空白。圖中標註的非常詳細,理解每一部分都是展示什麼內容的即可。

 

4.設置你的Github

新註冊完了之後,一般都需要瀏覽一下設置。

儘管是全英文界面(如果使用谷歌瀏覽器,可以有網頁翻譯幫助理解),但是儘量不要牴觸它,要從內心深處去嘗試接受它,無非就是一些概念換了個英文的殼子而已。

由於是剛開始接觸,所以不妨多花些時間來泡在每一項設置上,嘗試去理解開發者爲什麼要設置這些選項,是爲了應對哪些風險呢?這些措施可不可以爲以後我們自己開發網站提供經驗和思路?這些都是我們值得花時間去接受新事物的原因。

第一步完善自己的信息,點擊如下Settings菜單:

到設置頁面來設置一些信息:

 

頭像、Name建議設置一個常用的,要有識別性,公開的郵箱也設置一個,便於技術人的交流。

這樣其他技術人員、企業、獵頭可以通過這個公開郵箱去聯繫你。

個人覺得最好不要放QQ郵箱,哪怕申請一個谷歌郵箱然後轉發到QQ郵箱逼格也高一些呀。

另筆者近期實測,谷歌郵箱Gmail可以直接在網頁申請,我的號碼是183開頭移動號,可以接收短信驗證碼(聽說有些手機號解接收不了驗證碼?)。

也可以弄個163、foxmail郵箱。其實如果花上一個下午的時間去好好了解這些郵箱服務商之間的不同是很有收穫的,而且最好把一個郵箱設置爲你的主郵箱其他的郵箱郵件都轉發到主郵箱裏。要養成常看主郵箱的習慣

 

5.Github基本概念

 

Github上有一些概念是我們經常會遇到的,整理如下:(其實就是一個熟悉程度的問題,經常玩GitHub就慢慢熟悉了)

 

Repository

倉庫的意思,即你的項目,在Github平臺上,屬於雲端或者服務器端的倉庫。

你要在Github上開源一個項目,那就要新建一個Repository,項目和Repository是一一對應的。

 

Issue

問題的意思。舉個例子,你開源了一個項目,別人發現你的項目中有bug,或者哪些地方做的不夠好,他就可以給你提個Issue,即問題,大家都給你提問題,提的問題多了,也就是 Issues

然後你看到了這些問題,就可以逐個去修復,修復完了就可以一個個的close掉。

 

Star

這個就是給項目「點贊」,也可以理解爲「收藏」,因爲Star的項目被系統記錄下來了,你可以隨時查看。但是Github上獲得Star比微博知乎要難很多。

筆者認爲,最大原因就是Github是技術人的圈子,大家技術水平都很高,所以獲得點讚的門檻比較高。

 

Fork

英文中的“叉子”,可以翻譯成「分叉」。

什麼意思呢? 你開源了一個項目,別人想在你這個項目的基礎上做些改進,然後應用到自己的項目中,這個時候他就可以 Fork 你的項目,然後他的Github主頁上就多了一個項目,只不過這個項目是基於你的項目基礎(本質上就是在原來項目的基礎上新建了一個分支,分支的概念在後面講Git時候說),他可以隨心所欲地改進、應用,但是不會影響原有項目地代碼與結構(其實就是克隆了一份,然後改造克隆的那份)。

仔細想想,我們如果想使用某個開源項目,是不是就是這樣 Fork,然後加以改造就行了呢?

 

Pull Request

發起請求,這個概念是基於Fork的。

還是上面那個例子,如果別人在你的基礎上做了改進,然後覺得改的很不錯,這些改進應該讓更多的人獲益,於是想把自己的改進合併到原來項目裏,這時他就可以發起一個 Pull Request (簡稱PR),原有項目創建者,也就是你,就會收到這個請求(PR),這時你可以仔細 Review 他的改進(代碼),並且測試覺得OK了,就會接收他的PR,併合並進去,然後他做的改進原有的項目就會擁有了。

仔細想想,這不就是廣發開發者改進Linux、Android等開源項目的過程嗎?

 

Watch

這個好理解,就是「觀察」。如果你Watch了某個項目,那麼以後只要這個項目有任何更新,你都會第一時間收到關於這個項目的通知提醒。

體會一下跟 Star 的區別。

 

Gist

有些時候你沒有項目可以開源,只是想簡單的分享一些代碼片段,那麼就使用Gist吧!

 

6.創建自己的遠程倉庫(Repository)

點擊頂部導航欄的 「+ 」可以快速創建一個項目,如下圖:

 這裏就是創建一個新的項目,需要填寫如上幾部分:項目名項目描述簡單的介紹

你不付費就沒法選擇私有的,所以接着只能選擇Public的,然後勾選「Initialize this repository with a README」。

這樣就擁有了你的第一個GitHub項目:

 可以看到這個項目只包含了一個 README.md 文件,但是它已經是一個完整的Git倉庫了。

你可以對它進行一些操作,比如WatchStarFork,還可以Clone或者下載下來。

關於 README.md,GitHub上所有關於項目的詳細介紹以及Wiki都是基於Markdown語法的,之後在GitHub上搭建博客,寫博客也是如此。

關於Matkdown語法的推薦一篇文章:

Markdown新手指南

 


三、「Git速成」

之前的篇幅介紹過,GitHub是基於Git的,也就是說Git是基礎,第三部分是介紹最基本的、最常用的Git知識,很快可以入門。

 

1、什麼是Git?

Git是Linux發明者Linus開發的一款新時代的版本控制系統。

我們在軟件開發過程中對於源代碼的管理是很重要的,比如爲了防止代碼的丟失,肯定本地機器和遠程服務器都要存放一份,而且要有一套機制讓本地可以和遠程同步;

又比如開發一個項目經常是好幾個人做同一個項目,都要對一份代碼做更改,這個時候需要大家互不影響,又需要各自可以同步別人的代碼;

又比如我們開發的時候難免會有bug,甚至有時候剛發佈的功能就出現了嚴重的bug,這個時候就需要緊急對代碼進行還原;

又比如隨着我們版本迭代的功能越來越多,但是我們需要清楚的知道歷史每一個版本的代碼更改記錄,甚至知道每個人歷史提交代碼的情況;

等等等等類似上述的情況,這些都是版本控制系統能解決的問題。

所以說,版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。

對於軟件開發領域來說版本控制是最重要的一環,而Git毫無疑問是當下最流行、最好用的版本控制系統。

 

2、Git安裝

Git是一個版本控制系統,也是一個工具,跟Java類似,使用之前必須得先下載安裝,所以第一步是要安裝。

Mac上自帶Git,Windows系統要自己安裝。

Mac:https://sourceforge.net/projects/git-osx-installer/

Windows:https://git-for-windows.github.io/

Linux:apt-get install git

 

3、如何學習Git

安裝好Git之後,怎麼學習是個問題,其實關於Git有很多圖形化的軟件可以操作,但是本人感覺從命令行開始學習理解會更好。

雖然沒接觸過命令行的人可能會很牴觸,但是隻有一開始學習命令行,之後你對Git的每一步操作才能更好理解其意義。

等到熟練之後我們再用各種圖形化的軟件去操作是完全沒問題的。

 

4、Git命令列表

如何判斷Git有沒有安裝成功?在Git Bash命令行列裏輸入git,如果出現以下提示就說明成功了。

 Git所有的操作命令都要以git開頭,上面列舉了最常用的Git命令,緊接着會有一句英文解釋這個命令的意義,都不是很難的單詞,不妨深入鑽研一下每個命令的大概意思。

不過沒有動手操作還是不好理解,接下來用具體操作來體會這些命令。

5、Git具體命令

提醒:在進行任何Git操作之前都需要在Git Bash中切換到Git倉庫目錄,也就是先要切換到項目的文件夾目錄下。

Windows用戶直接手動建立一個項目文件夾(我在D盤下建立了GitTest文件夾作爲測試),在文件夾裏新建一個文件a.md(Markdown格式文件)。

 

Linux用戶用命令來建立:

mkdir test (創建文件夾test)

cd test  (切換到test目錄)

touch a.md  (新建a.md文件)

 

建立好之後,先隨便操作一個命令,比如 git status  ,可以看到如下提示(顏色無所謂):

 

 意思就是當前這個文件夾還不是一個Git倉庫。

 

使用 git init 來初始化這個文件夾使其成爲一個git倉庫:

 可以看到初始化成功,這時候GitTest文件夾就是一個git倉庫了。

緊接着輸入 git status 命令,會有以下提示:

 默認就是在master分支,分支的概念在後面有進一步的解釋。

這時最主要的提示就是a.md文件時Untracked files,就是說a.md這個文件還沒被跟蹤,還沒有提交到git倉庫裏,而且提示你可以用git add <file>  去操作你想要提交的文件

git status 這個命令顧名思義就是查看狀態,這個命令可以算是使用最頻繁的一個命令了,建議沒事就輸入一下這個命令,來查看你當前git倉庫的一些狀態。

 

git add

上面提示 a.md 文件還沒提交到倉庫裏,這時可以隨便編輯一下 a.md 文件,然後輸入 git add a.md ,再輸入 git status

 此時提示以下文件Changes to be committed,意思就是 a.md 文件等待被提交。

當然你可以使用 git rm --cached 這個命令去移除這個緩存。

 

git commit

接着我們輸入 git commit -m ‘first commit’,這個命令中 commit 就是提交的意思,-m 代表提交時的備註信息,即對這次提交的說明,執行了以上命令代表我們已經正式進行了第一次提交。

這時再輸入git status,會提示 nothing to commit。

輸入 git log 命令,會看到如下:

git log 命令可以查看所有產生的commit記錄,所以可以看到已經產生了一條commit記錄,提交時的備註信息就叫“first commit”。

注意:git add & git commit

看到這裏也許會有疑問,我想要提交直接進行commit不就行了嗎,爲什麼要先add一次呢?

首先git add 時先把改動添加到一個「暫存區」,你可以理解爲一個緩存區域,臨時保存你的改動,而git commit纔是最後的提交。這樣的好處就是防止誤提交。

當然也有辦法把這兩步合併成一步,不過後面再介紹,建議新手按部就班的一步步來。

git branch

branch就是“分支”的意思。分支的概念很重要,尤其是團隊協作開發的時候。

假設兩個人都在做同一個項目,這個時候分支就是保證兩人能協同合作的最大利器。

舉個例子,A,B兩人都在做同一個項目,但是是不同的模塊。這個時候A新建了一個分支叫a,B新建了一個分支叫b,這樣A,B做的所有代碼改動都各自在各自的分支,互不影響,等到倆人都把各自的模塊做完了,最後再統一把分支合併起來。

執行了 git init ,初始化git倉庫之後會默認生成一個主分支master,也是你所在的默認分支,也基本是實際開發正式環境下的分支,一般情況下master分支不會輕易直接再上面操作的,你們可以輸入git branch 查看當前分支情況:

 如果我們想在此基礎上新建一個分支呢? 只需執行命令 git branch a 就新建了一個名字叫 a 的分支。

而且這時候分支a和分支master是一模一樣的內容,我們再輸入 git branch 查看當前的分支情況:

 但是可以看到master分支前有個 * 號,即雖然新建了一個 a 的分支,但是當前所在的分支還是在master上。

如果我們想在a分支上進行開發,首先要切換到a分支上去,所以使用以下命令切換分支:

git checkout a

執行之後,再輸入 git branch 查看分支情況;

 可以看到當前我們所在分支已經到a上去了。也就是說,這時本地文件夾裏的內容其實屬於a 分支,A同學就可以在自己的本地上在他新建的a分支去進行代碼改動了。

也許會有人要說,我要先新建再切換,太麻煩,有沒有一步到位的命令?有!

git checkout -b a

這個命令就是新建一個a分支,並且自動切換到a分支。

 

git merge

A同學在a分支寫了自己的代碼,終於完工了他的功能,並且測試也都ok了,準備上線,這時候就需要把他本地的代碼合併到GitHub上的主分支master上來,然後發佈。

git merge 就是合併分支用到的命令.面對這種情況,需要做兩步:

第一步是切換到master分支,如果你已經在了就不用切換了;

第二步是執行 git merge a,意思就是把a分支的代碼合併過來。

不出意外的話,這時a分支的代碼就順利合併到master分支來了。但是在實際情況中,會經常出現“意外”,也就是說經常會因爲出現衝突而導致合併失敗。這一點,後面講。

git branch -d

有新建分支,就有刪除分支。假如這個分支新建錯了,或者a分支的代碼已經順利合併到master分支來了,那麼a分支算是沒用了(已經測試完的代碼就合併到正式程序中去了),需要刪除,這時執行git branch -d a就可以把a分支刪除了。

git branch -D

有時候會刪除失敗,比如如果a分支的代碼還沒有合併到master,你執行 git branch -d a是刪除不了的,它會智能提示你a分支還要未合併的代碼,但是如果你非要刪除,那就執行 git branch -D a就可以強制刪除a分支。

git tag

我們在客戶端開發的時候經常會有版本的概念,比如v1.0、v1.1之類的。

不同的版本肯定對應不同的代碼,所以我們一般要給代碼加上標籤,這樣假設v1.1版本出了一個新bug,但是又不知道v1.0是否有這個bug,有了標籤就可以順利切換到v1.0的代碼,重新打個包測試了。

所以如果想要新建一個標籤很簡單,比如 git tag v1.0 就代表我在當前代碼狀態下新建了一個v1.0的標籤,輸入git tag可以查看歷史tag記錄。

 如果建立了兩個標籤,v1.0和v1.1,需要切換的話,執行命令git checkout v1.0,這樣就順利的切換到v1.0 tag的代碼狀態了。

 

以上是一些最基本的Git操作,而且全是在本地環境進行操作的,完全沒有涉及遠程倉庫,下一部分將以遠程GitHub倉庫爲例,講解下本地如何跟遠程倉庫一起同步協作。

 


四、「向GitHub提交代碼」

這部分開始來介紹如何跟遠程倉庫一起協作,來嘗試如何向GitHub上提交自己的代碼!

1.SSH

當我們擁有一個GitHub賬號之後,就可以自由的Clone或者下載其他項目,也可以創建自己的項目,但是沒辦法提交代碼。

仔細想想會理解,肯定不能隨意就能提交代碼的,如果隨意可以提交代碼,那麼GitHub上的項目就會亂套。

所以在提交代碼之前一定是需要某種授權的,而GitHub上一般都是基於SSH授權的。

那麼什麼是SSH呢?

簡單點說,SSH是一種網絡協議,用於計算機之間的加密登錄。目前是每一臺Linux電腦的標準配置。

而大多數Git服務器都會選擇使用SSH公鑰來進行授權,所以想要在GitHub提交代碼的第一步就是要先添加SSH key配置。

 

2.生成SSH key

Linux和Mac都是默認安裝了SSH,而Windows系統安裝了Git Bash也是帶了SSH的。我們可以在終端(Windows下在Git Bash裏)輸入ssh 如果出現以下提示證明你本機已經安裝了SSH,否則請自行搜索安裝下:

 緊接着輸入 ssh-keygen -t rsa ,什麼意思呢?就是指定rsa算法生成密鑰,接着連續三個回車鍵(不需要輸入密碼),然後就會生成兩個文件 id_rsa id_rsa.pub ,而 id_rsa是密鑰,id_rsa.pub 就是公鑰。

這兩個文件默認在如下目錄裏生成;

Linux/Mac系統在 ~/.ssh

Windows在 C:\Users\username\.ssh 

都是隱藏文件,相信大家都有辦法查看的。(Windows系統之直接提供查看隱藏文件選項)

 

接下來要做的就是把id_rsa.pub的內容添加到 GitHub上。

這樣你本地的id_rsa密鑰跟GitHub上的id_rsa.pub公鑰進行配對,授權成功纔可以提交代碼。

 

3.GitHub上添加SSH key

第一步先在GitHub上的設置頁面,點擊最左側「 SSH and GPG keys」:

 然後點擊右上角的「 New SSH key」 按鈕;

 需要做就是在Key那欄把 id_rsa.pub公鑰文件裏的內容複製粘貼進去就可以了(示例中爲了安全所以打碼),Title那欄不需要寫,點擊 Add SSH key」 按鈕就可以了。

提示:如何查看 id_rsa.pub文件的內容?

Linux/Mac用戶執行命令:

cd ~/.ssh

cat id_rsa.pub

Windows用戶,設置顯示隱藏文件,使用Notepad++或者EditPlus或Sublime打開復制就可以了。

SSH key添加成功之後,輸入 ssh -T [email protected] 進行測試,如果出現以下提示說明添加成功:

4.Push & Pull

在提交代碼之前我們先要了解兩個命令,也是之前留下了的問題,這兩個命令需要跟遠程倉庫配合。

 

Push:直譯過來就是「」的意思,什麼意思呢?就是說,如果你本地代碼有更新了,那麼就需要把本地代碼推到遠程倉庫,這樣本地倉庫跟遠程倉庫就可以保持同步了。

代碼示例:git push origin master

意思就是把本地代碼推到遠程master分支。

 

Pull:直譯過來就是「」的意思,如果別人提交代碼到遠程倉庫,這個時候你需要把遠程倉庫的最新代碼拉下來,然後保證兩端代碼的同步。

代碼示例:git pull origin master

意思就是把遠程最新的代碼更新到本地。

一般我們在push之前都會先pull,這樣不容易衝突。

 

5.提交代碼

添加SSH key成功之後,我們就有權限向GitHub上我們自己的項目提交代碼了,提交代碼有兩種方法:

 

  • Clone自己的項目。

 

我們以我在GitHub上創建的test項目爲例,執行如下命令(注意,需要先在本地建立一個文件夾用來放置項目,然後在該文件夾內用Git Bash打開,執行命令):

git clone [email protected]:KeneathGuo/test.git

這樣就把test項目clone到了本地,我們可以把clone理解爲高級點的複製,這時候該項目本身就已經是一個git倉庫了,不需要執行git init進行初始化,而且甚至都已經關聯好了遠程倉庫,我們只需要在這個test目錄下任意修改或者添加文件,然後進行commit,之後就可以執行:

git push origin master

進行代碼提交,這是最簡單方便的一種方式。

至於怎樣獲取某個項目的倉庫地址呢?如下圖(這幾天GitHub忽然又上不去了,所以用了大佬的圖):

 

  • 關聯本地已有項目。

 

如果我們本地已經有一個完整的git倉庫,並且已經進行了很多次commit,這個時候第一種方法就不適合了。

假設我們本地有個test2的項目,我們需要的是在GitHub上建一個test的項目,然後把本地test2上所有代碼的commit記錄提交到GitHub上的test項目。

第一步就是在GitHub上建一個test項目,這個很簡單。

第二步是把本地test2項目與GitHub上的test項目進行關聯,切換到test2目錄,執行如下命令:

git remote add origin [email protected]:KeneathGuo/test.git

 

什麼意思?就是添加一個遠程倉庫,它的地址是 [email protected]:KeneathGuo/test.git ,而 origin是給這個項目的遠程倉庫起的名字。

這個名字可以隨便取,只是大家默認只有一個遠程倉庫時名字就是origin。

爲什麼要給遠程倉庫取名字?因爲我們可能一個項目有多個遠程倉庫,比如GitHub一個,比如公司一個,這樣的話提交到不同的遠程倉庫就需要指定不同的倉庫名字了。

 

查看我們當前項目有哪些遠程倉庫時可以執行如下命令;

git remote -v

 

接下來,我們本地的倉庫就可以向遠程倉庫進行代碼提交了:

 

git push origin master

 

就是默認向GitHub上的test目錄提交了代碼,而這個代碼是在master分支。

當然,也可以提交到指定的分支,這一點之後再講。

提醒:提交代碼之前要設置一下自己的用戶名和郵箱,因爲這些信息會出現在所有的commit記錄裏,執行以下命令就可以設置;

git config --global user.name "KeneathGuo"

git config --global user.email "[email protected]"

 

6.總結

通過以上的介紹,我們終於對GitHub的基礎用法有了瞭解。

但是還有很多很多細節等待我們去深挖,比如分支的高級理解和使用,比如git的其他高級配置,比如怎樣向一些開源項目貢獻代碼,發起Pull Request等等,有機會的話以後慢慢深挖。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章