close

最近公司要把版控系統換成git,就花了一點時間來看一下

雖然以前有用過一小段時間,不過可以說是啥都記不得了XD

這篇就以我最近的學習內容來說說吧

 

1. GitHub

有些人會把git和gitHub兩個東西搞混,其實這兩個... 基本上是不同的兩個東西

git就是所謂的版本控制系統,github比較像是 "使用git作為版本控制系統的server"

所以如果你懶得自己嫁什麼server,直接用github也是可以

然後gitHub有提供一些其他功能,比如說他可以直接用web去瀏覽很方便,可以跟一些CI的系統整合(像是jenkins),提供一個平台可以讓你的web程式在上面跑,諸如此類的

就是個挺方便的東西,有興趣可以去用看看

 

2. git 基本使用

基本上git只要學會基本操作,就可以完成大部分的需求了

不過我個人覺得對於只用過SVN這種集中式的板控的人,觀念上會有點不一樣,因為我就是=ˇ=

 

首先git是 "分散式" 的版本控制系統,什麼是分散式呢?就是 "每個人的local端都是一個版控"

當你從遠端clone一個repository下來之後,你的local端就等於是建立一個版控系統了

你可以在local端做任何修改,比如說開跟砍branch、新增或刪除commit等等,只要你沒有push到遠端,對於其他人來說就沒有任何影響

我覺得這樣最大的好處是你可以在local端整理commit,修改成你個人覺得最好的情況之後再push

這跟集中式版控是不一樣的,集中式版控如果要commit或做任何事都會直接影響到遠端的server上,其他人也必需去做應對的動作

這樣的設計方式跟流程也讓開發變得比較容易,如果有興趣可以去搜尋一下git flow,基本上就是用這個概念去延伸出很多開發流程

 

git有幾個基本的操作指令,還有一些基本的概念,如果大概知道的話,我個人覺得就可以應付大部分的工作了

除非有什麼意外之類的... XD

一些環境設定什麼的就先不談了,理論上就是下載git,建個帳號,在local端建立使用者資訊這樣,就可以開始使用了

1. clone

clone就是從遠端拉一份新的repository下來,這是最剛開始要做的事情

他會從遠端複製一份rerpository到local端

2. fetch

當你想要知道遠端的repository有什麼變動時,可以用fetch這個指令

他會把遠端新增加的commit拉到local端

3. merge

就是合併的意思,用來合併兩個branch

4. pull

這個指令簡單來說就是fetch + merge,他會把遠端新增的commit拉下來,然後跟你local端的commit merge

當然,這過程中如果有發生conflict的話 (就是你的commit跟遠端新增的commit有衝突,git不曉得該怎麼合併),就需要user自己來解決了

5. checkout

可以把他想成移動的意思,要移動到哪個commit或branch都可以用這個指令(雖然現在有switch這個指令可以切換分支了)

checkout -b 也可以建立新的branch,或是加上--track參數,建立一個branch去追蹤跟同步遠端的branch

6. commit

對目前的修改增加commit,這個沒什麼好解釋的吧XD

順帶一提,每個commit都有一個sha1值,用來分辨各個commit

7. push

把local端的commit推到遠端,表示local端的工作完成了,push之後別人也才看的到你做的內容

 

比較基本的大概就這些吧

其實如果是用GUI的話,事情會變得簡單很多

不過建議還是先從command用用看一些基本的指令,練習一下,比較能夠理解

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 頁頁頁六滴 的頭像
    頁頁頁六滴

    人森很精彩,所以要把所有事情都記起來=ˇ=

    頁頁頁六滴 發表在 痞客邦 留言(0) 人氣()