Git,Github和Gitlab簡介和基本使用
-- 作者 謝恩銘 轉載請註明出處
這年頭不知道Git, 還真不好意思出門跟人家打招呼!
不過假如您不知道, 或者不是太清楚, 那也沒關係。可以先跟我打個招呼, 看完這篇文章, 就可以跟別人去打招呼了。:P
什麼是Git
Git是一個版本控制系統(Version Control System,VCS)。
版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。
多年前,我在法國做第一個實習時(2011年),那時候自己程式設計還在入門階段,根本沒聽過版本控制系統。
那時候真是蠢(現在也沒好到哪裡去),每次修改多一點的程式碼,就要複製、黏貼整個專案目錄。因此,公司的電腦裡有著幾十個專案的副本(簡直了)。
前不久,我看到公司的一個實習生也在做和我多年前同樣的事。而且我們問他,他說沒聽說過版本控制系統...
現在,我用Git也有幾年了吧。絕對是越用越爽,不用不爽;一朝使用,愛不釋手。
每天到公司第一件事,開電腦;第二件事,在終端中切換到專案目錄,然後輸入Git命令。
有了版本控制系統,就可以不用擔心檔案丟失,不小心誤修改檔案等等“事故”,而且你可以隨便回到歷史記錄的某個時刻。
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系統上,只要輸入下面命令:
sudo apt-get install git-all
關於安裝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的外觀和操作的各個方面。這些變數可以被儲存在三個不同的位置:
/etc/gitconfig 檔案:包含了適用於系統所有使用者和所有庫的值。如果你傳遞引數選項’--system’ 給 git config,它將明確的讀和寫這個檔案。
~/.gitconfig 檔案 :具體到你的使用者。你可以通過傳遞--global 選項使Git 讀或寫這個特定的檔案。
位於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
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按鈕,填寫基本資訊即可。
建立專案按鈕
填寫Gitlab專案資訊
可以看到,專案的預設屬性是Private(私人的),當然,你也可以選擇Public(公開的)或Internal(內部的)。
怎麼樣,Github和Gitlab很酷吧。
快去試試Git吧, 再不趕緊, "女神"都老了 (沒關係, 用git reset或者revert或者git rebase可以重回美好時光)!
我是謝恩銘,在巴黎奮鬥的軟體工程師。
熱愛生活,喜歡游泳,略懂烹飪。
這年頭不知道Git, 還真不好意思出門跟人家打招呼!
不過假如您不知道, 或者不是太清楚, 那也沒關係。可以先跟我打個招呼, 看完這篇文章, 就可以跟別人去打招呼了。:P
什麼是Git
Git是一個版本控制系統(Version Control System,VCS)。
版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。
多年前,我在法國做第一個實習時(2011年),那時候自己程式設計還在入門階段,根本沒聽過版本控制系統。
那時候真是蠢(現在也沒好到哪裡去),每次修改多一點的程式碼,就要複製、黏貼整個專案目錄。因此,公司的電腦裡有著幾十個專案的副本(簡直了)。
前不久,我看到公司的一個實習生也在做和我多年前同樣的事。而且我們問他,他說沒聽說過版本控制系統...
現在,我用Git也有幾年了吧。絕對是越用越爽,不用不爽;一朝使用,愛不釋手。
每天到公司第一件事,開電腦;第二件事,在終端中切換到專案目錄,然後輸入Git命令。
有了版本控制系統,就可以不用擔心檔案丟失,不小心誤修改檔案等等“事故”,而且你可以隨便回到歷史記錄的某個時刻。
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系統上,只要輸入下面命令:
sudo apt-get install git-all
關於安裝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的外觀和操作的各個方面。這些變數可以被儲存在三個不同的位置:
/etc/gitconfig 檔案:包含了適用於系統所有使用者和所有庫的值。如果你傳遞引數選項’--system’ 給 git config,它將明確的讀和寫這個檔案。
~/.gitconfig 檔案 :具體到你的使用者。你可以通過傳遞--global 選項使Git 讀或寫這個特定的檔案。
位於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
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按鈕,填寫基本資訊即可。
建立專案按鈕
填寫Gitlab專案資訊
可以看到,專案的預設屬性是Private(私人的),當然,你也可以選擇Public(公開的)或Internal(內部的)。
怎麼樣,Github和Gitlab很酷吧。
快去試試Git吧, 再不趕緊, "女神"都老了 (沒關係, 用git reset或者revert或者git rebase可以重回美好時光)!
我是謝恩銘,在巴黎奮鬥的軟體工程師。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標杆直跑」
相關文章
- Git && Github的基本使用教程Github
- 正確使用Github 的方法 + Git 和 GitHub 教程和技巧Github
- 如何使用 Ansible 同步 GitHub 和 GitLabGithubGitlab
- Hbase簡介和基本用法
- Git詳解和Github的使用Github
- git rebase簡介(基本篇)Git
- Git使用總結(一):簡介與基本操作Git
- 一臺電腦配置兩個Git賬號(github和gitlab),不同倉庫使用不同的gitGithubGitlab
- Git和github使用方法總結Github
- GitHub和GitLab的區別GithubGitlab
- 在Github和Git上fork之簡單指南Github
- ddddocr基本使用和介紹
- Git 使用簡介Git
- git和ES6的簡介Git
- Git和Gitlab協同工作Gitlab
- Git和GitHub快速上手Github
- 同時連線gitlab和githubGitlabGithub
- Hashtable簡介和使用
- RubyGems簡介和使用
- MAC上Git安裝與GitHub基本使用MacGithub
- Git 和 GitHub:從入門到實踐2 Git 和 GitHub 基礎配置Github
- GitHub和Git超超超詳細使用教程!Github
- Web 前置知識——Git 和 GitHub:① Git、GitHub初認識WebGithub
- Github和Git上fork指南Github
- 雜記:Git與Github簡單使用Github
- git、github、gitlab之間的關係GithubGitlab
- [Git 進階] 同一電腦共存git 和 gitlabGitlab
- Mac(OS X)中Git安裝與GitHub基本使用MacGithub
- 簡單對比git pull和git pull --rebase的使用Git
- 同時使用:gitlab & githubGitlabGithub
- Git 簡介與倉庫使用Git
- git同步原始碼到gitee和github原始碼GiteeGithub
- jQuery-簡介與基本使用jQuery
- Git簡介Git
- GitHub、GitLab、Git 操作的一些規範GithubGitlab
- windows系統git使用ssh方式和gitee/github進行同步WindowsGiteeGithub
- Go之NSQ簡介,原理和使用Go
- iptables基礎原理和使用簡介