Git,Github和Gitlab簡介和使用方法

[日期:2016-08-04] 來源:簡書 做者:frogoscar [字體:  ]

來源:https://www.jianshu.com/p/8d497989f704

這年頭不知道Git, 還真很差意思出門跟人家打招呼!

不過假如您不知道, 或者不是太清楚, 那也不要緊。能夠先跟我打個招呼, 看完這篇文章, 就能夠跟別人去打招呼了。:Pgit

什麼是Git

Git是一個版本控制系統(Version Control System,VCS)。程序員

版本控制是一種記錄一個或若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。github

多年前,我在法國作第一個實習時(2011年),那時候本身編程還在入門階段,根本沒聽過版本控制系統。sql

那時候真是蠢(如今也沒好到哪裏去),每次修改多一點的代碼,就要複製、黏貼整個項目目錄。所以,公司的電腦裏有着幾十個項目的副本(簡直了)。編程

前不久,我看到公司的一個實習生也在作和我多年前一樣的事。並且咱們問他,他說沒據說過版本控制系統...vim

如今,我用Git也有幾年了吧。絕對是越用越爽,不用不爽;一朝使用,愛不釋手。服務器

天天到公司第一件事,開電腦;第二件事,在終端中切換到項目目錄,而後輸入Git命令。less

有了版本控制系統,就能夠不用擔憂文件丟失,不當心誤修改文件等等「事故」,並且你能夠隨便回到歷史記錄的某個時刻。分佈式

SVN, CVS這類早期的集中式版本控制系統,都有一個單一的集中管理的服務器,保存全部文件的修訂版本,而協同工做的人們都經過客戶端連到這臺服務器,取出最新的文件或者提交更新。工具

它們的原理相似下圖:

集中式版本控制系統

而Git或Mercurial這類分佈式版本控制系統, 纔是現代的首選。由於分佈式的優點絕對顯著。

在分佈式版本控制系統裏,客戶端並不僅提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。

這麼一來,任何一處協同工做用的服務器發生故障,過後均可以用任何一個鏡像出來的本地倉庫恢復。由於每一次的提取操做,實際上都是一次對代碼倉庫的完整備份。

分佈式版本控制系統

如今,Google, Facebook, Microsoft等世界級公司天天在用Git。

衆所周知,IT界大牛不少, 可是大牛中的大牛稀少。

Linus Torvalds就是其中之一。

Linus Torvalds不但開創了Linux操做系統(固然了, 開源社區對Linux貢獻極大, 參看個人 【Linux探索之旅】開宗明義+第一部分第一課:什麼是Linux? ), 並且他發明了Git版本控制系統。

如今的Android系統底層就是基於更改過的Linux系統,你說Linus Torvalds是否是貢獻極大。

Git的誕生頗有趣:

2005年Linux 內核開發社區正面臨嚴峻的挑戰:他們不能繼續使用 BitKeeper(一個分佈式版本控制系統) 了(緣由是當時Bitkeeper 著做權全部者決定收回受權,內核開發團隊與其協商無果),而又沒有其餘的 SCM (Software Configuration Management)可知足他們的分佈式系統的需求。

Linux 之父 Linus Torvalds 接受了這個挑戰,決定開發一個新的版本控制系統。週末他消失了,新的一週,Git 問世了。LT就是威武。

Atlassian爲Git作了一個10年的紀錄圖。

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

Git配置和經常使用命令

安裝Git很簡單,在Ubuntu等Debian族的Linux系統上,只要輸入下面命令:

[sql]  view plain  copy
 
  1. su<span class="operator"><span class="keyword" style="font-weight:bold">do</span> apt-<span class="keyword" style="font-weight:bold">get</span> install git-<span class="keyword" style="font-weight:bold">all</span></span>  

關於安裝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,它容許你得到和設置配置變量;這些變量能夠控制Git的外觀和操做的各個方面。這些變量能夠被存儲在三個不一樣的位置:

  1. /etc/gitconfig 文件:包含了適用於系統全部用戶和全部庫的值。若是你傳遞參數選項’--system’ 給 git config,它將明確的讀和寫這個文件。

  2. ~/.gitconfig 文件 :具體到你的用戶。你能夠經過傳遞--global 選項使Git 讀或寫這個特定的文件。

  3. 位於git目錄的config文件 (也就是 .git/config) :不管你當前在用的庫是什麼,特定指向該單一的庫。每一個級別重寫前一個級別的值。所以,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。

個人Git config(配置)列表:

個人Git config(配置)列表

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

[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

由於我比較喜歡偷懶(程序員須要學會偷懶好麼), 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是版本控制系統,Github是在線的基於Git的代碼託管服務。

GitHub是2008年由Ruby on Rails編寫而成。GitHub同時提供付費帳戶和免費帳戶。這兩種帳戶均可以建立公開的代碼倉庫,可是付費帳戶也能夠建立私有的代碼倉庫。

爲何如今Github這麼火,以致於世界頂級公司和項目的源碼不少都託管在Github上,首先:

顏值高!

如今這世代仍是得看看顏值的。你說Sourceforge等代碼託管網站也年歲好久了,爲何沒有Github那麼火呢?

關鍵是Github長得好看(你長這麼好看,說什麼都是對的)。

對比Github和Sourceforge

Github

Github

Sourceforge

反正我看了Github再來看Sourceforge的主頁,我已經不想用Sourceforge了。

軟件的顏值體現了設計者的審美觀以及設計能力。

2011年,Github已經取代Sourceforge,成爲最活躍的代碼交流社區。這意味着在Open Source Community(開源社區),Git取代了SVN已經成爲事實。

並且,Github如今都快成爲程序員簡歷的一個重要加分條件了。

若是你的簡歷裏放上你的Github連接,招聘者經過你對開源項目的貢獻和你本身的項目代碼,就能夠對你的水準瞭解大概(我還沒把個人項目都放到Github上,慢慢來吧)。

Linus Torvalds的Github頁面

https://github.com/torvalds

Gitlab

Github有個小缺陷 (也不能算是缺陷吧), 就是你的repo(repository的縮寫,表示「倉庫」)都須要public(公開), 若是你想要建立private(私人)的repo, 那得付錢。

不過, 幸虧, Gitlab解決了這個問題, 能夠在上面建立免費的私人repo。

好比咱們公司就是用Gitlab來管理項目的( 【程序員】項目經理如何調動組員積極性 )。

我在公司的Gitlab

能夠看到,我是從2015年10月12日在Ercom公司工做的,一直活躍度還不錯(必須爲中國人爭光麼,我但是組裏最努力的)。

再看我我的的Gitlab帳戶頁面,至今只有幾個項目,由於大部分都開源在Github上。

個人我的Gitlab

要建立Gitlab的新項目很簡單,和Github相似,只要點擊New Project按鈕,填寫基本信息便可。

建立項目按鈕

相關文章
相關標籤/搜索