前序:
本文面對的是之前沒有了解過git的同學,內容以科普為主~
正文開始:
只要是網際網路公司,相信都會使用過svn,尤其傳統行業,比如銀行;
反過來問,svn是什麼?度娘解釋:
SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統;
就是用於多個人共同開發同一個專案,共用資源的目的;
複製程式碼
那是不是就SVN做管理工具就夠了?答案很明顯,非也;
現在越來越多公司都拋棄svn,改用git;
沒錯,git跟svn一樣是版本控制工具,那svn到底有什麼問題導致要用git?
git是一款免費的、開源的分散式版本管理控制系統(工具)
那git跟svn的區別在哪裡?
1)核心的區別:
git是分散式,svn是集中式
使用過svn的同學都知道,是需要配置伺服器地址的,這也說明svn必須要放到一個伺服器上,所有操作都比較與伺服器互動;
舉例:研發從svn伺服器獲取最新版本的程式碼,然後修改,修改完成再把程式碼推送到svn伺服器
那git呢?git是分散式的,沒有中心伺服器的概念,如果非要說,安裝git後,自己電腦就是一箇中心伺服器,跟其他同學沒有任何關聯,即時自己電腦掛了,也不會影響到別人的工作,這點svn是做不到的,一旦svn掛了,所有使用者都收到牽連~
2)聯網問題: 使用svn是需要聯網的,而git不需要聯網
3)效率問題: svn下載速度比較慢,同一個程式碼倉庫,git可以幾十秒就可以了,但是svn可能要幾分鐘或者更長
4)工作流程: svn每次提交前都需要update,或者commit不會成功,如果出現衝突,就會被打斷提交操作,誰先快提交就萬事大吉,但是git沒問題問題,有衝突直接處理就好~
Git的四個組成部分
還有很多很多區別,這裡不多說明,可自行了解,總體來說,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就好了~
安裝完畢後應該會有下面這幾個圖示,就說明安裝成功啦~
這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/
另一種是通過 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/
開啟後自行註冊,不清楚的就找度娘吧,這裡不說明了~
註冊完畢後,首先是建立倉庫~
隨便輸入一個名稱,點選create repository即可~
建立完畢後,會進入到倉庫介面,會顯示下面的內容,先不需要管,後面會用的上~
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執行。
複製程式碼
一路回車就行,密碼一般不用設定~
出現上圖,就說明建立成功了,直接cd .ssh進入資料夾,看看目錄下面有什麼?
有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~
title隨便寫,key把剛剛copy的id_rsa.pub內容copy進去就行了~
新增完成後,會看到剛剛新增的key,可以新增多個key
驗證是否成功 再次開啟git bash,輸入下面的命令:
ssh -T git@github.com
複製程式碼
初次設定的話,會出現下面的結果,輸入yes就行了~
完了嗎?還沒呢~既然都已經打通了,為什麼不提交一次記錄試試?
設定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,複製裡面的內容~
在git bash 輸入:
git clone 你的倉庫地址(就是上面copy的內容)
複製程式碼
別以為看到warn就以為不正常了,只是提示著是個空目錄~
接下來就要本地建立檔案,然後推動到服務端了,怎麼做?
還記得在github上建立完倉庫的那張圖嗎?趕緊翻翻,裡面以後說明~
手把手按照上圖操作就行了
echo "# jbtest" >> README.md //建立README.md檔案
git add README.md //把README.md檔案新增到暫存區
git commit -m 'first commit' //新增指定檔案到暫存區
git push origin master //上傳master分支到遠端倉庫
複製程式碼
就這樣,重新重新整理github的頁面,就能看到剛剛提交的內容啦~
這只是最簡單的,正常情況還會涉及log檢視,衝突處理,切換分支的概念,這裡不細說,度娘能拯救你,如果有必要,會新開一篇來詳細介紹~
git gui
也許有同學說,記不住命令,但是還是想用git怎麼辦?
Windows下提供Git gui軟體,就是為了解決這個問題,讓我們也有gui來模擬一次提交吧~
還是剛剛的專案,開啟git gui軟體~
因為我們是已經存在的專案,選擇open existing repository開啟剛剛的專案
開啟後是這樣的~自己先手動開啟README.md檔案,用記事本就可以,隨便輸入點內容,點選儲存即可~
然後回到git gui上~
點選下面的rescan按鈕,左上角的unstaged changes原來是沒有內容的,點選後就會把剛剛修改的檔案及內容展示出來,如下~
然後點選rescan下的stage changed,點選後,檔案就會移動到下面綠色的staged changes;
然後在commit message下輸入內容,點選sign off,這些內容就是會上傳的github的~
然後就點選commit,再點選push,會彈出一個框,因為目前只有master分支,直接點選push即可~
直接是綠色提示success,都代表成功了,如果有衝突之類的,就會標紅並且把錯誤原因說明,修改後再次重複下面的操作即可~
開啟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貌似只能用命令了~希望能對各位起到幫助,多謝大家的支援~