前序:
本文面對的是以前沒有了解過git的同窗,內容以科普爲主~git
只要是互聯網公司,相信都會使用過svn,尤爲傳統行業,好比銀行;
反過來問,svn是什麼?度娘解釋:github
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統;
就是用於多我的共同開發同一個項目,共用資源的目的;
複製代碼
那是否是就SVN作管理工具就夠了?答案很明顯,非也;
如今愈來愈多公司都拋棄svn,改用git;
沒錯,git跟svn同樣是版本控制工具,那svn到底有什麼問題致使要用git?
web
1)核心的區別:
git是分佈式,svn是集中式 緩存
使用過svn的同窗都知道,是須要配置服務器地址的,這也說明svn必需要放到一個服務器上,全部操做都比較與服務器交互;
舉例:研發從svn服務器獲取最新版本的代碼,而後修改,修改完成再把代碼推送到svn服務器bash
那git呢?git是分佈式的,沒有中心服務器的概念,若是非要說,安裝git後,本身電腦就是一箇中心服務器,跟其餘同窗沒有任何關聯,即時本身電腦掛了,也不會影響到別人的工做,這點svn是作不到的,一旦svn掛了,全部用戶都收到牽連~服務器
2)聯網問題: 使用svn是須要聯網的,而git不須要聯網app
3)效率問題: svn下載速度比較慢,同一個代碼倉庫,git能夠幾十秒就能夠了,可是svn可能要幾分鐘或者更長ssh
4)工做流程: svn每次提交前都須要update,或者commit不會成功,若是出現衝突,就會被打斷提交操做,誰先快提交就萬事大吉,可是git沒問題問題,有衝突直接處理就好~分佈式
還有不少不少區別,這裏很少說明,可自行了解,整體來講,git更靈活,代碼通常都從git,若是文檔,能夠考慮使用svn~各有各優點~svn
按大類劃分,分爲兩種狀態:
Tracked(已跟蹤)和Untracked(未跟蹤),
依據是:該文件是否已加入版本控制?
流程簡述:
假設某個項目已加入版本控制系統
1.新建一個文件,該文件處於 Untracked 狀態;
2.經過git add命令添加到緩存區,此時文件處於Tracked狀態又或者說
此時這個文件已經被版本控制系統所跟蹤,並且他處於Staged(暫存)狀態;
3.經過git commit命令把暫存區的文件提交提交到本地倉庫,此時文件
處於Unmodified(未修改)狀態;
4.此時若是去編輯這個文件,文件又會變成Modified(修改)狀態;
複製代碼
因爲用的是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是一個面向開源及私有軟件項目的託管平臺,
由於只支持git 做爲惟一的版本庫格式進行託管
複製代碼
那GitHub跟git的關係有很明顯,一個是版本控制工具,一個是用git作版本控制的項目託管平臺;
GitHub的官網以下:https://github.com/
打開後自行註冊,不清楚的就找度娘吧,這裏不說明了~
註冊完畢後,首先是建立倉庫~
隨便輸入一個名稱,點擊create repository便可~
建立完畢後,會進入到倉庫界面,會顯示下面的內容,先不須要管,後面會用的上~
本地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怎麼辦?
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貌似只能用命令了~但願能對各位起到幫助,多謝你們的支持~