JB的git之旅-git介紹及GitHub配置教程

jb發表於2018-05-17

前序
本文面對的是之前沒有了解過git的同學,內容以科普為主~

正文開始:

只要是網際網路公司,相信都會使用過svn,尤其傳統行業,比如銀行;
反過來問,svn是什麼?度娘解釋:

SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統;
就是用於多個人共同開發同一個專案,共用資源的目的;
複製程式碼

那是不是就SVN做管理工具就夠了?答案很明顯,非也;

現在越來越多公司都拋棄svn,改用git

沒錯,git跟svn一樣是版本控制工具,那svn到底有什麼問題導致要用git?

JB的git之旅-git介紹及GitHub配置教程
先一句話介紹git:
git是一款免費的、開源的分散式版本管理控制系統(工具)

那git跟svn的區別在哪裡?

1)核心的區別
git是分散式,svn是集中式

JB的git之旅-git介紹及GitHub配置教程

使用過svn的同學都知道,是需要配置伺服器地址的,這也說明svn必須要放到一個伺服器上,所有操作都比較與伺服器互動;
舉例:研發從svn伺服器獲取最新版本的程式碼,然後修改,修改完成再把程式碼推送到svn伺服器

那git呢?git是分散式的,沒有中心伺服器的概念,如果非要說,安裝git後,自己電腦就是一箇中心伺服器,跟其他同學沒有任何關聯,即時自己電腦掛了,也不會影響到別人的工作,這點svn是做不到的,一旦svn掛了,所有使用者都收到牽連~

2)聯網問題: 使用svn是需要聯網的,而git不需要聯網

3)效率問題: svn下載速度比較慢,同一個程式碼倉庫,git可以幾十秒就可以了,但是svn可能要幾分鐘或者更長

4)工作流程: svn每次提交前都需要update,或者commit不會成功,如果出現衝突,就會被打斷提交操作,誰先快提交就萬事大吉,但是git沒問題問題,有衝突直接處理就好~

Git的四個組成部分

JB的git之旅-git介紹及GitHub配置教程

還有很多很多區別,這裡不多說明,可自行了解,總體來說,git更靈活,程式碼一般都從git,如果文件,可以考慮使用svn~各有各優勢~

Git檔案的幾個狀態

按大類劃分,分為兩種狀態:
Tracked(已跟蹤)和Untracked(未跟蹤)
依據是:該檔案是否已加入版本控制?

流程簡述:

假設某個專案已加入版本控制系統
1.新建一個檔案,該檔案處於 Untracked 狀態;
2.通過git add命令新增到快取區,此時檔案處於Tracked狀態又或者說 
此時這個檔案已經被版本控制系統所跟蹤,而且他處於Staged(暫存)狀態;
3.通過git commit命令把暫存區的檔案提交提交到本地倉庫,此時檔案 
處於Unmodified(未修改)狀態;
4.此時如果去編輯這個檔案,檔案又會變成Modified(修改)狀態;
複製程式碼

git安裝

由於用的是win0 ,所以Linux跟Mac都是來自git官網的哈~

Windows
度娘直接有,但是當時找了半天,因此特意分享下,需要的同學拿走~ https://pan.baidu.com/s/1e-W5r6CY8lhfCsz75IJHsw         密碼:gyj9

安裝過程沒有啥特別的,一直next就好了~

安裝完畢後應該會有下面這幾個圖示,就說明安裝成功啦~

JB的git之旅-git介紹及GitHub配置教程

這3個工具,一般常用的是git bash跟git gui,
git gui是一個圖形介面的git專案管理工具,對於不想記命令的童鞋是一種福音~

Linux:
如果要在 Linux 上安裝預編譯好的 Git 二進位制安裝包,可以直接用系統提供的包管理工具。
在 Fedora 上用 yum 安裝:

$ yum install git-core

在 Ubuntu 這類 Debian 體系的系統上,可以用 apt-get 安裝:
$ apt-get install git

Mac
在 Mac 上安裝 Git 有兩種方式。
最容易的當屬使用圖形化的 Git 安裝工具,下載地址在:

http://sourceforge.net/projects/git-osx-installer/

JB的git之旅-git介紹及GitHub配置教程

另一種是通過 MacPorts (http://www.macports.org) 安裝。
如果已經裝好了 MacPorts,用下面的命令安裝 Git:

$ sudo port install git-core +svn +doc +bash_completion +gitweb

至此,git已經安裝完畢了~

GitHub

GitHub是什麼?

gitHub是一個面向開源及私有軟體專案的託管平臺,
因為只支援git 作為唯一的版本庫格式進行託管
複製程式碼

那GitHub跟git的關係有很明顯,一個是版本控制工具,一個是用git做版本控制的專案託管平臺;

GitHub的官網如下:https://github.com/
開啟後自行註冊,不清楚的就找度娘吧,這裡不說明了~

註冊完畢後,首先是建立倉庫~

JB的git之旅-git介紹及GitHub配置教程

JB的git之旅-git介紹及GitHub配置教程

隨便輸入一個名稱,點選create repository即可~

建立完畢後,會進入到倉庫介面,會顯示下面的內容,先不需要管,後面會用的上~

JB的git之旅-git介紹及GitHub配置教程

git跟github是怎麼通訊的?

本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密傳輸的,
GitHub需要識別是否是你推送,GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送,所以需要配置ssh key~

ssh key怎麼獲取?
還記得安裝完後有一個Git bash軟體嗎?點選它~

ssh key是存放在.ssh目錄的,那我們用Git bash輸入命令建立ssh key:

$ ssh-keygen -t rsa -C "your_email@youremail.com"
//注意,雙引號裡面是你的郵箱。填你註冊github的郵箱就行了。按enter執行。
複製程式碼

一路回車就行,密碼一般不用設定~

JB的git之旅-git介紹及GitHub配置教程

出現上圖,就說明建立成功了,直接cd .ssh進入資料夾,看看目錄下面有什麼?

JB的git之旅-git介紹及GitHub配置教程

有id_rsa和id_rsa.pub兩個檔案,這兩個就是SSH Key的祕鑰對,
id_rsa是私鑰,不能洩露,id_rsa.pub是公鑰,可以公開。

配置ssh: 在git bash 執行 cat id_rsa.pub,把輸出的內容copy出來,然後開啟github網站,點選右上角自己的圖示,點選Setting->ssh key 頁面,點選add ssh key~

JB的git之旅-git介紹及GitHub配置教程

JB的git之旅-git介紹及GitHub配置教程

JB的git之旅-git介紹及GitHub配置教程

title隨便寫,key把剛剛copy的id_rsa.pub內容copy進去就行了~

新增完成後,會看到剛剛新增的key,可以新增多個key

JB的git之旅-git介紹及GitHub配置教程

驗證是否成功 再次開啟git bash,輸入下面的命令:

ssh -T git@github.com
複製程式碼

初次設定的話,會出現下面的結果,輸入yes就行了~

JB的git之旅-git介紹及GitHub配置教程

完了嗎?還沒呢~既然都已經打通了,為什麼不提交一次記錄試試?

設定username和email 設定username和email,因為github每次commit都會記錄他們

git config --global user.name "your name"     //你的github登入名
git config --global user.email "your_email@youremail.com"  //你的github郵箱
複製程式碼

先把創庫clone下載,開啟git bash,挑一個你想存放專案的目錄,比如在C盤新建一個test目錄,然後進入到該目錄下~

cd c:    //進入到C盤
mkdir test    //建立一個叫test的目錄
cd test       //進入到test目錄
複製程式碼

注意,第一條git命令要來了~
倉庫地址在哪裡?開啟github倉庫首頁,就能看到倉庫地址了~
選擇ssh,複製裡面的內容~

JB的git之旅-git介紹及GitHub配置教程

在git bash 輸入:

git clone 你的倉庫地址(就是上面copy的內容)
複製程式碼

別以為看到warn就以為不正常了,只是提示著是個空目錄~

JB的git之旅-git介紹及GitHub配置教程

接下來就要本地建立檔案,然後推動到服務端了,怎麼做?
還記得在github上建立完倉庫的那張圖嗎?趕緊翻翻,裡面以後說明~

JB的git之旅-git介紹及GitHub配置教程

手把手按照上圖操作就行了

 echo "# jbtest" >> README.md    //建立README.md檔案
 git add README.md              //把README.md檔案新增到暫存區
 git commit -m 'first commit'   //新增指定檔案到暫存區
 git push origin master         //上傳master分支到遠端倉庫
複製程式碼

就這樣,重新重新整理github的頁面,就能看到剛剛提交的內容啦~

JB的git之旅-git介紹及GitHub配置教程

這只是最簡單的,正常情況還會涉及log檢視,衝突處理,切換分支的概念,這裡不細說,度娘能拯救你,如果有必要,會新開一篇來詳細介紹~

git gui

也許有同學說,記不住命令,但是還是想用git怎麼辦?
Windows下提供Git gui軟體,就是為了解決這個問題,讓我們也有gui來模擬一次提交吧~

還是剛剛的專案,開啟git gui軟體~

因為我們是已經存在的專案,選擇open existing repository開啟剛剛的專案

JB的git之旅-git介紹及GitHub配置教程
開啟後是這樣的~

JB的git之旅-git介紹及GitHub配置教程

自己先手動開啟README.md檔案,用記事本就可以,隨便輸入點內容,點選儲存即可~
然後回到git gui上~

點選下面的rescan按鈕,左上角的unstaged changes原來是沒有內容的,點選後就會把剛剛修改的檔案及內容展示出來,如下~

JB的git之旅-git介紹及GitHub配置教程

然後點選rescan下的stage changed,點選後,檔案就會移動到下面綠色的staged changes;

然後在commit message下輸入內容,點選sign off,這些內容就是會上傳的github的~

JB的git之旅-git介紹及GitHub配置教程

然後就點選commit,再點選push,會彈出一個框,因為目前只有master分支,直接點選push即可~

JB的git之旅-git介紹及GitHub配置教程

直接是綠色提示success,都代表成功了,如果有衝突之類的,就會標紅並且把錯誤原因說明,修改後再次重複下面的操作即可~

開啟github,重新整理自己的專案,就會看到剛剛提示的資訊了~

JB的git之旅-git介紹及GitHub配置教程

到最後,再引出一個東西,gitlab,是一款基於Git的專案管理軟體,那跟github區別是?
GitLab擁有GitHub擁有的一切,但他擁有更多——讓團隊對它們的repositories擁有更多的控制,它的特色;
而gitlab的配置跟github是一樣的,這裡不多說明~

關於圖形git工具選擇:
Windows下推薦git 自帶的git gui

mac的話,可以用SourceTree,
當然也支援Windows版本,官網下載地址:https://www.sourcetreeapp.com/

小結
本文主要介紹了git安裝及與github配置、svn跟git的差異,以及最後引出gitlab,
對於不喜歡用命令的同學,Windows下可以用git gui來簡化操作流程,Linux跟Mac貌似只能用命令了~希望能對各位起到幫助,多謝大家的支援~

JB的git之旅-git介紹及GitHub配置教程

相關文章