Git颠悬,Github和Gitlab簡介和基本使用

作者 謝恩銘窑滞,公眾號「程序員聯(lián)盟」(微信號:coderhub)。
轉(zhuǎn)載請注明出處电爹。
原文:http://www.reibang.com/p/8d497989f704


這年頭不知道Git, 還真不好意思出門跟人家打招呼!
不過假如您不知道, 或者不是太清楚, 那也沒關(guān)系蔫仙。可以先跟我打個招呼, 看完這篇文章, 就可以跟別人去打招呼了丐箩。:P

什么是Git


Git是一個版本控制系統(tǒng)(Version Control System摇邦,VCS)。

版本控制是一種記錄一個或若干文件內(nèi)容變化屎勘,以便將來查閱特定版本修訂情況的系統(tǒng)涎嚼。

多年前,我在法國做第一個實習(xí)時(2011年)挑秉,那時候自己編程還在入門階段法梯,根本沒聽過版本控制系統(tǒng)。

那時候真是蠢(現(xiàn)在也沒好到哪里去)犀概,每次修改多一點的代碼立哑,就要復(fù)制、黏貼整個項目目錄姻灶。因此铛绰,公司的電腦里有著幾十個項目的副本(簡直了)。

前不久产喉,我看到公司的一個實習(xí)生也在做和我多年前同樣的事捂掰。而且我們問他,他說沒聽說過版本控制系統(tǒng)...

現(xiàn)在曾沈,我用Git也有幾年了吧这嚣。絕對是越用越爽,不用不爽塞俱;一朝使用姐帚,愛不釋手。

每天到公司第一件事障涯,開電腦罐旗;第二件事,在終端中切換到項目目錄唯蝶,然后輸入Git命令九秀。

有了版本控制系統(tǒng),就可以不用擔(dān)心文件丟失粘我,不小心誤修改文件等等“事故”鼓蜒,而且你可以隨便回到歷史記錄的某個時刻。

SVN, CVS這類早期的集中式版本控制系統(tǒng),都有一個單一的集中管理的服務(wù)器友酱,保存所有文件的修訂版本晴音,而協(xié)同工作的人們都通過客戶端連到這臺服務(wù)器柔纵,取出最新的文件或者提交更新缔杉。

它們的原理類似下圖:

集中式版本控制系統(tǒng)

而Git或Mercurial這類分布式版本控制系統(tǒng), 才是現(xiàn)代的首選。因為分布式的優(yōu)勢絕對顯著搁料。

在分布式版本控制系統(tǒng)里或详,客戶端并不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來郭计。

這么一來霸琴,任何一處協(xié)同工作用的服務(wù)器發(fā)生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復(fù)昭伸。因為每一次的提取操作梧乘,實際上都是一次對代碼倉庫的完整備份。

分布式版本控制系統(tǒng)

現(xiàn)在庐杨,Google, Facebook, Microsoft等世界級公司每天在用Git选调。

眾所周知,IT界大牛很多, 但是大牛中的大牛稀少灵份。

Linus Torvalds就是其中之一仁堪。

Linus Torvalds不但開創(chuàng)了Linux操作系統(tǒng)(當(dāng)然了, 開源社區(qū)對Linux貢獻極大, 參看我的【Linux探索之旅】開宗明義+第一部分第一課:什么是Linux?), 而且他發(fā)明了Git版本控制系統(tǒng)填渠。

現(xiàn)在的Android系統(tǒng)底層就是基于更改過的Linux系統(tǒng)弦聂,你說Linus Torvalds是不是貢獻極大。

Git的誕生很有趣:

2005年Linux 內(nèi)核開發(fā)社區(qū)正面臨嚴(yán)峻的挑戰(zhàn):他們不能繼續(xù)使用 BitKeeper(一個分布式版本控制系統(tǒng)) 了(原因是當(dāng)時Bitkeeper 著作權(quán)所有者決定收回授權(quán)氛什,內(nèi)核開發(fā)團隊與其協(xié)商無果)莺葫,而又沒有其他的 SCM (Software Configuration Management)可滿足他們的分布式系統(tǒng)的需求。

Linux 之父 Linus Torvalds 接受了這個挑戰(zhàn)枪眉,決定開發(fā)一個新的版本控制系統(tǒng)徙融。周末他消失了,新的一周瑰谜,Git 問世了欺冀。LT就是威武。

Atlassian為Git做了一個10年的紀(jì)錄圖萨脑。

https://www.atlassian.com/git/articles/10-years-of-git/

Git配置和常用命令


安裝Git很簡單隐轩,在Ubuntu等Debian族的Linux系統(tǒng)上,只要輸入下面命令:

sudo apt-get install git-all

關(guān)于安裝Git渤早,可以看這個鏈接

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

安裝完Git就可以對其做一些配置职车。

Git有一個工具被稱為git config,它允許你獲得和設(shè)置配置變量;這些變量可以控制Git的外觀和操作的各個方面悴灵。這些變量可以被存儲在三個不同的位置:

  1. /etc/gitconfig 文件:包含了適用于系統(tǒng)所有用戶和所有庫的值扛芽。如果你傳遞參數(shù)選項’--system’ 給 git config,它將明確的讀和寫這個文件积瞒。

  2. ~/.gitconfig 文件 :具體到你的用戶川尖。你可以通過傳遞--global 選項使Git 讀或?qū)戇@個特定的文件。

  3. 位于git目錄的config文件 (也就是 .git/config) :無論你當(dāng)前在用的庫是什么茫孔,特定指向該單一的庫叮喳。每個級別重寫前一個級別的值。因此缰贝,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值馍悟。

我的Git config(配置)列表:

我的Git config(配置)列表

這個配置就在你的個人目錄的.gitconfig(有一個點哦, 不用ls -al是看不到的)文件中, 你可以用vim來打開編輯內(nèi)容 (vim ~/.gitconfig), 我的內(nèi)容如下

[user]    
    name = Enming Xie    
    email = enming.xie@blabla.fr
[color]    
    ui = auto
[alias]    
    st = status    
    pl = pull --ff-only    
    ps = push    
    co = checkout    
    ci = commit    
    df = difftool    
    cp = cherry-pick    
    ca = commit --amend    
    br = branch    
    l = log --stat    
    last = log -1    
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit    
    up = push origin    
    lf = log --follow -p    
    aa = ls-files --modified    
    su = status -uno    
    cm = commit -m    
    uf = push origin -f    
    cl = clean -fdx    
    fe = fetch --prune    
    cf = clean -fdx    
    bd = branch -D    
    cb = checkout -b
[push]    
    default = simple
[core]    
    editor = vim    pager = less -+F
[diff]    
    tool = meld
[difftool]    
    prompt = false
[merge]    
    tool = meld
[init]    
    templatedir = ~/.git_template

因為我比較喜歡偷懶(程序員需要學(xué)會偷懶好么), git命令有幾個太長的, 我就用alias(別名)來替代了, 這樣平時輸入git命令就快了很多, 簡直飛起!

我最常用的Git命令(全名,沒用alias之前):

git checkout

git status

git checkout -b

git commit

git diff

git add

git clean -fdx

git fetch --prune

git pull --ff-only

git branch -D

git push

git merge

git rm

git rebase

git reset

git revert

git push origin :yourbranch

Git必看書籍


Pro Git這本書(也可以看其電子版)絕對是Git入門和進深的不二選擇剩晴。

我的同桌說:他進公司時锣咒,被要求先讀兩遍這本書。

英文版:

https://git-scm.com/book/en/v2

中文版:

https://git-scm.com/book/zh/v2

Github


Github 和 Git 是兩回事赞弥。

Git是版本控制系統(tǒng)毅整,Github是在線的基于Git的代碼托管服務(wù)。

GitHub是2008年由Ruby on Rails編寫而成嗤攻。GitHub同時提供付費賬戶和免費賬戶毛嫉。這兩種賬戶都可以創(chuàng)建公開的代碼倉庫,但是付費賬戶也可以創(chuàng)建私有的代碼倉庫妇菱。

為什么現(xiàn)在Github這么火承粤,以至于世界頂級公司和項目的源碼很多都托管在Github上,首先:

顏值高闯团!

現(xiàn)在這世代還是得看看顏值的辛臊。你說Sourceforge等代碼托管網(wǎng)站也年歲很久了,為什么沒有Github那么火呢房交?

關(guān)鍵是Github長得好看(你長這么好看彻舰,說什么都是對的)。

對比Github和Sourceforge

Github
Sourceforge

反正我看了Github再來看Sourceforge的主頁候味,我已經(jīng)不想用Sourceforge了刃唤。

軟件的顏值體現(xiàn)了設(shè)計者的審美觀以及設(shè)計能力。

2011年白群,Github已經(jīng)取代Sourceforge尚胞,成為最活躍的代碼交流社區(qū)。這意味著在Open Source Community(開源社區(qū))帜慢,Git取代了SVN已經(jīng)成為事實笼裳。

而且唯卖,Github現(xiàn)在都快成為程序員簡歷的一個重要加分條件了。

如果你的簡歷里放上你的Github鏈接躬柬,招聘者通過你對開源項目的貢獻和你自己的項目代碼拜轨,就可以對你的水準(zhǔn)了解大概(我還沒把我的項目都放到Github上,慢慢來吧)允青。

Linus Torvalds的Github頁面

https://github.com/torvalds

Gitlab


Github有個小缺陷 (也不能算是缺陷吧), 就是你的repo(repository的縮寫橄碾,表示“倉庫”)都需要public(公開), 如果你想要創(chuàng)建private(私人)的repo, 那得付錢。

不過, 幸好, Gitlab解決了這個問題, 可以在上面創(chuàng)建免費的私人repo昧廷。

比如我們公司就是用Gitlab來管理項目的(【程序員】項目經(jīng)理如何調(diào)動組員積極性)堪嫂。

我在公司的Gitlab

可以看到偎箫,我是從2015年10月12日在Ercom公司工作的木柬,一直活躍度還不錯(必須為中國人爭光么,我可是組里最努力的)淹办。

再看我個人的Gitlab賬戶頁面眉枕,至今只有幾個項目,因為大部分都開源在Github上怜森。

我的個人Gitlab

要創(chuàng)建Gitlab的新項目很簡單速挑,和Github類似,只要點擊New Project按鈕副硅,填寫基本信息即可姥宝。

創(chuàng)建項目按鈕
填寫Gitlab項目信息

可以看到,項目的默認屬性是Private(私人的)恐疲,當(dāng)然腊满,你也可以選擇Public(公開的)或Internal(內(nèi)部的)。

怎么樣培己,Github和Gitlab很酷吧碳蛋。

快去試試Git吧, 再不趕緊, "女神"都老了 (沒關(guān)系, 用git reset或者revert或者git rebase可以重回美好時光)!


我是 謝恩銘,公眾號「程序員聯(lián)盟」(微信號:coderhub)運營者省咨,慕課網(wǎng)精英講師 Oscar 老師肃弟,終生學(xué)習(xí)者。
熱愛生活零蓉,喜歡游泳笤受,略懂烹飪。
人生格言:「向著標(biāo)桿直跑」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敌蜂,一起剝皮案震驚了整個濱河市箩兽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌紊册,老刑警劉巖比肄,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件快耿,死亡現(xiàn)場離奇詭異,居然都是意外死亡芳绩,警方通過查閱死者的電腦和手機掀亥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妥色,“玉大人搪花,你說我怎么就攤上這事∴诤Γ” “怎么了撮竿?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長笔呀。 經(jīng)常有香客問我幢踏,道長,這世上最難降的妖魔是什么许师? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任房蝉,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己已艰,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布檀蹋。 她就那樣靜靜地躺著,像睡著了一般云芦。 火紅的嫁衣襯著肌膚如雪俯逾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天焕数,我揣著相機與錄音纱昧,去河邊找鬼。 笑死堡赔,一個胖子當(dāng)著我的面吹牛识脆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播善已,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼灼捂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了换团?” 一聲冷哼從身側(cè)響起悉稠,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艘包,沒想到半個月后的猛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耀盗,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年卦尊,在試婚紗的時候發(fā)現(xiàn)自己被綠了叛拷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡岂却,死狀恐怖忿薇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躏哩,我是刑警寧澤署浩,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站扫尺,受9級特大地震影響筋栋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜器联,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一二汛、第九天 我趴在偏房一處隱蔽的房頂上張望婿崭。 院中可真熱鬧拨拓,春花似錦、人聲如沸氓栈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽授瘦。三九已至醋界,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間提完,已是汗流浹背形纺。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留徒欣,地道東北人逐样。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像打肝,于是被迫代替她去往敵國和親脂新。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • GIT分布式版本控制系統(tǒng)最佳實踐 這篇文章來自于老男孩教育高級架構(gòu)師班12期的徐亮偉同學(xué)粗梭。 首先感謝老男孩架構(gòu)師班...
    meng_philip123閱讀 3,395評論 4 36
  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站争便,我僅僅是作為學(xué)習(xí)之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 3,943評論 3 27
  • 8排12號
    漾阿鏡閱讀 262評論 0 0
  • 抽身幾日行走山水間断医,願青山綠水洗去身上的蕪雜滞乙,心至澄明... 我的城市在後視鏡里變得越來越小奏纪,直到消失不見。前面斩启,...
    LEILEILL閱讀 303評論 0 0
  • 我們開發(fā)項目的過程中通常會碰到一種需求亥贸,某個對象包含多種狀態(tài)變化的可能性,隨著狀態(tài)的變化行為也執(zhí)行不同的動作浇垦。 以...
    伍阿哥閱讀 467評論 0 0