做爲一個一直用SVN的傢伙,深深地感到了本身在版本控制工具上的落伍。。。。
首先必須強調的是:
Git與Github不是一回事。 Git是目前世界上最早進的分佈式版本控制系統,於2005年被linux創始人Linus開發出來。而Github是一個基於Git爲全球開源項目免費提供git存儲的網站,衆多著名開源項目都遷移至Github~ 而開源時代的來臨也使得軟件行業活力倍增。
做爲分佈式版本控制系統的Git,與傳統的CVS、SVN相比優點明顯。傳統的集中式系統,版本庫集中存放在中央服務器,各個終端必須鏈接至中央服務器進行操做,這致使了許多的不方便。在Git中,沒有中央服務器,每一個終端上都有一個完整的版本庫,安全性大大提高。(在集中式系統中,一旦中央服務器掛掉仍是很棘手的) 不過在使用的時候,Git中也會有臺主機擔任至關於「中央服務器」的角色,它用來做爲主分支方便全部人交換分支並進行整體的版本控制,但它並非必須的。 Git相對於傳統集中式版本控制系統的優點還不只僅在於安全性,其暫存區、分支等概念也帶來了不少的優點。
對於Git的使用,主要有客戶端與命令行兩種方式,我的以爲不必定必須去追求命令行的使用,非Linux環境下已經有了很好有的圖形化界面幹嗎不用?~
不少IDE中也已經集成了Git,好比Visual Studio、Storm系列,Sublime中也有Git插件。 關於客戶端的使用就自行摸索了~
在命令行中使用,Linux天然不用說,而在Windows下主要是使用GitBash工具。本文中的演示也是基於Windows下的Git Bash
進入正題:
1、建立版本庫並提交文件:
一、建立項目目錄並使用
git init命令將其變成一個Git能夠管理的倉庫:
如:
隨後就會在該文件夾下發現隱藏屬性的.git目錄,Git就是使用這個目錄來跟蹤管理版本庫的。
二、建立文件並添加到倉庫
我已經在Data-Structure-in-JavaScript文件夾下建立了BinaryTree.js 將其添加到版本庫的步驟以下:
共需兩步: 一、git add 文件名 對須要提交的文件進行add操做,可屢次進行
二、git commit [-m 提交說明] 對以前add的文件執行提交,說明不是必須選項但強烈建議養成每次提交寫說明的習慣。
讓咱們把其它文件也加入:
爲何要分兩步操做呢?在Git中有着工做區與暫存區的概念,咱們的項目目錄便是工做區。而在版本庫中,則有暫存區與分支。add操做是將當前修改提交到暫存區,而commit操做則是將暫存區全部的修改提交至分支。
2、與版本庫進行交互
一、查看當前狀態:
git status
此時咱們修改一下BinarTree.js,則會顯示出修改過的文件 使用git diff命令還能顯示修改過的位置
修改過以後再次使用git add與git commit命令提交修改便可
二、版本回退
首先可使用git log命令查看歷史記錄。使用該命令會顯示從最近到最遠的提交記錄,每條記錄中顯示版本號、提交者、提交日期以及提交記錄四項。
使用git reset --hard commit_id命令進行回退
只要本次進程沒有關閉,仍是能夠經過一樣的命令回到將來的版本。假如進程關閉以後再想回到將來版本的話,可使用git reflog命令查看命令歷史,從中獲知將來版本的版本號並進行穿梭。重啓Git Bash 操做以下
三、撤銷修改
可使用git checkout -- file命令撤銷工做區的修改。很容易理解,檢出操做會用最近一次commit或add的文件來覆蓋當前修改過的文件,當前工做區的修改就等同於被撤銷。這裏若是已經添加到了暫存區,則會恢復暫存區的狀態;若是還沒添加至暫存區,則會回到版本庫中的最新版本時的狀態。
若是修改已經添加至暫存區,則可使用git reset HEAD file操做,將暫存區的修改撤銷,從新放回工做區。此時,即可以使用checkout命令撤銷工做區的修改~
若是修改已經提交至版本庫。。。 回退版本吧~
四、刪除文件
刪除文件的時候,咱們直接在系統中刪除文件。此時,git中便會顯示刪除的文件,此時可使用 git rm 文件名 並提交將文件從版本庫中刪除;或者使用git checkout 文件名命令恢復文件。好比這裏新建了remove.js文件,以後在系統中刪除該文件。
總結:
命令 |
功能 |
git init |
建立版本庫 |
git add 文件名 |
將修改添加至暫存區 |
git commit |
將暫存區的全部修改提交至版本庫 |
git status |
查看當前狀態 |
git log |
查看版本記錄 |
git reflog |
查看命令歷史 |
git checkout -- 文件名 |
檢出文件以撤銷工做區修改 |
git reset HEAD file |
撤銷暫存區修改,恢復至工做區 |
git rm 文件名 |
刪除文件 |