版本控制系統:html
一、CVS和SVN是集中式的版本控制系統。git
二、Git是分佈式版本控制系統;github
集中式的版本控制系統:安全
版本庫是放在中央服務器的,一旦出問題,就沒法幹活。幹活的時候用本身電腦,因此須要從中央服務器取得最新版本,修改完後再把本身的活推送給中央服務器。最大毛病是必須聯網才能工做,網速慢時會被憋死。ruby
分佈式版本控制系統: 服務器
有一臺「中央服務器的」的電腦,用於多人合做交換修改的。它安全性更高,由於每一個電腦都有完整的版本庫,一旦出問題,能夠從其餘電腦複製。有強大的分支管理。ssh
安裝git和基本用法 分佈式
一、從git 官網下載程序,默認安裝便可。ui
二、設置帳號和郵箱關聯,帳號和郵箱能夠是碼雲、GitLab...的帳號都行:spa
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
三、選擇合適地方,建立空目錄:
$ mkdir test //建立空目錄,目錄名字爲test $ cd test //進入test目錄
四、初始化倉庫,把目錄變成git 能夠管理的倉庫:
$ git init
$ ls //查看文件
$ ls -ah //若是.git目錄是影藏的話,能夠經過這個命令查看.git目錄
五、提交文件到git 上
$ git add . //告訴Git,把文件添加到倉庫,此時是將修改添加到暫存區,可add 屢次 $ git commit -m '本次提交的備註' //告訴Git把文件提交到倉庫,此時是吧暫存區的全部內容提交到當前分支,可一次提交不少文件
六、查看當前倉庫的狀態
$ git status //查看版本庫狀態,什麼被修改過但還沒提交的
$ git diff //查看當前相對上一次提交修改的內容
七、版本回退
$ git log //顯示從最近到最遠的提交日誌 $ git log --pretty== oneline //顯示log,可是不顯示不少凌亂的信息 q //顯示log版本信息有不少,使用q鍵中止查看 git reset —hard head^ //回退到上一個版本 git reset —hard head^^ //回退到上上個版本 git reset —hard head~100 //回退到以前100個版本 git reset —hard +commit_id //回到某個版本號的版本 git reset — hard 版本號 //版本回退屢次後須要恢復最新版本 $ git reflog //查看曾經使用過的命令
八、撤銷修改
$ git checkout -- test.html
九、刪除文件
$ rm test.index //可直接在文件管理中刪除文件,要不用rm 命令去刪除 $ git rm test.html //從版本庫中刪除 $ git commit -m '刪除 test.html文件'
丟棄一個沒有被合併過的分支,能夠經過強行刪除。$ git branch -D <name> //
遠程倉庫
一、建立SSH Key(須要生成 id_rsa私鑰 和 id_rsa.pub公鑰 兩個文件)
$ ssh-keygen -t rsa -C "youremail@example.com"
二、登陸GitHub,設置"SSH Keys",複製 id_rsa.pub 內容去添加。可容許添加多個SSH。
三、關聯遠程倉庫
$ git remote add origin git@github.com:帳戶名
四、將本地的內容推送到遠程庫分支上
$ git push -u origin 分支名字 //第一次推送分支全部內容
$ git push origin 分支名字 //推送最新修改
五、查看遠程倉庫信息
$ git remote $ git remote -v //查看更加詳細的信息
克隆
$ git clone 須要克隆的倉庫地址
建立分支,而且切換過去
$ git checkout -b 新分支的名字 //建立分支而且切入進分支 或者等同於 $ git branch 分支名 //建立分支 $ git checkout 分支名 //切換到分支 $ git branch //查看分支
合併分支
$ git checkout -b dev $ git branch $ git add . $ git commit -m '提交test文件到dev分支' $ git checkout master //切換到主分支 $ git merge dev //將dev分支上的內容合併到master分支上,合併 指定分支 到 當前分支
$ git merge --no-ff -m "merge with no-ff" dev //合併分支時加上--no-ff
參數就能夠用普通模式合併,合併後的歷史有分支,經過git log查看--no-ff
$ git branch -d dev //刪除dev分支
解決衝突:
同一文件修改衝突,須要手動解決衝突後再提交。git status可查看衝突,根據標記可修改衝突部分,修改結束後再從新提交。
$ git pull //拉取遠程內容
$ git log --graph //命令能夠看到分支合併圖。
關聯本地倉庫和遠程倉庫
$ git branch --set-upstream-to <branch-name> origin/<branch-name>
建立標籤
$ git branch $ git checkout dev $ git tag v1.0 //爲當前須要打標籤的分支打新標籤 $ git tag //查看全部標籤 $ git tag -a 指定標籤信息 -m "blablabla..." //可指定標籤信息
操做標籤
$ git push origin <tagname> //能夠推送一個本地標籤; $ git push origin --tags //能夠推送所有未推送過的本地標籤; $ git tag -d <tagname> //能夠刪除一個本地標籤; $ git push origin :refs/tags/<tagname> //能夠刪除一個遠程標籤。
改變Git顏=色
$ git config --global color.ui true