今天要講的內容:項目管理和工具
Git:版本控制系統
Less:動態的css語言,提高編寫CSS的效率
Gulp:項目自動構建工具,對html,css,js,image進行壓縮,合並等操作。
一.什么是git
1.Git是什么
Git是目前世界上最先進的分布式版本控制系統(沒有之一)。
CSV,SVN。
疑問:
分布式是什么意思?
版本控制是什么東西?
2.為什么需要Git
所以:版本控制可以幫助我們實現兩件事情
l 自動記錄每次的修改,並且可以方便的切換到任一版本
l 可以完成多人協作開發
3.Git和GitHub有何區別
Git是一款免費開源的分布式版本控制系統 --- 工具,就是一個軟件
Github是用Git做版本控制的代碼托管平台 --- 平台 就是一個網站
二.快速入門
1.安裝
下載的是windows下面的安裝。
最簡單的就是 全部使用 默認值。
安裝完成之后,可以在任意目錄,點擊右鍵,可以看到
2.使用
典型流程:
l 初始化一個Git倉庫(git init)
l 設置用戶名和郵箱
l 添加文件到倉庫(git add 文件名1 文件名2 )
l 提交 (git commit -m 說明文字)
l 查看版本 (git log)
l 回退 (git reset --hard HEAD^/commit_id)
先建一個目錄,作為項目目錄。
(1).初始化一個git倉庫
查看剛才的目錄,如下:
注意,這個.git目錄是隱藏的文件夾,需要設置顯示隱藏的內容,才可以看見。
我們不要在這目錄中進行任何的操作。
(2).設置用戶名和郵箱
必須要設置,否則后續的一些操作將無法完成。
(3).添加文件到倉庫
這里的文件,就是我們的項目文件。如index.html,test.css等。
主要是是文本類型的文件,包括txt、html、css、js等。
Text/html
Text/CSS
Text/JavaScript
對應的圖片,word就不是。
添加如下:
注意:我們在使用命令的時候,經常沒有提示。如果有提示,基本都是錯誤。
Linux中的哲學:沒有消息就是好消息。
(4).提交
將剛剛添加到倉庫的 所有文件,提交成第一個版本。
Git Commit -m 說明
說明不能少,如果沒有寫,則無法commit。
(5).查看版本情況
使用git log 查看版本情況
后續的重復3~5這三個過程。
比如,我又新建了一個base.css文件
然后使用git add base.css,添加到倉庫
接下來,就可以使用git commit來提交
(6).回退
我們可以回退到任何一個版本。
git reset commit_id
比如,我又后悔了,需要回到之前的那個未來的版本,可以使用git reset commit_id
三. Git基本概念及原理
1.基本概念
l 工作區
l 版本庫
l 暫存區
l 分支
在當前項目目錄,以.git目錄作為分界線,一分為二。.git是版本庫,也就是Git倉庫。
.git之外所有的內容都是工作區。
工作區:其實就是我們的項目目錄及文件。我們進行常規開發的內容。
版本庫:.git目錄,是Git工具用於管理版本的這個目錄,千萬不要動。
對於版本庫,也就是.git 目錄所控制的部分,又有兩個非常重要東西:
l 暫存區
l master分支
回顧剛才的操作,需要將一個文件添加到版本庫中的某個版本,做了兩步操作:
第一,使用git add
第二,使用git commit
實際上,在使用Git的時候,不能將文件一步添加到版本庫的某一個分支。必須要分兩步,
第一步,將文件從工作區添加到 版本庫中的暫存區。
第二步,將暫存區中的所有內容一次性提交到版本庫的當前分支。
所以,在剛才的操作中,使用git add,其實就是將文件,如index.html添加到 暫存區中。
然后 使用git commit 將暫存區中的所有內容 提交給 master分支。
打一個比方。
2.原理剖析
核心:理解暫存區,以及具體的執行過程。
當前工作區中的兩個文件,都已經添加到版本庫中的master分支。
此時,暫存區是空的,然后嘗試使用git commit來提交,結果如下:
在工作區中新建一個test.js文件,
此時,test.js和版本庫沒有任何關聯,不在版本庫中的任何分支上。
如圖:
如果,此時使用git commit命令嘗試提交,會出現如下情況:
接下來,將test.js加入到 暫存區。
在示意圖中,如下:
此時,暫存區中已經有內容了,所以可以使用git commit進行提交了。
一旦將暫存區中的內容commit到master中,那么暫存區就會清空。
再次進行 commit操作,不會有任何提交的。
四.Git基本操作
主要掌握一些幾個命令
l git config
l git init
l git add
l git commit
l git status
l git reset
主要,這些命令都是基於單人開發的版本控制。
1.git config
獲取或者設置git 的配置項。
有哪些呢?
git config --list
獲取具體的某一個配置。
Git config 配置項名
如:
2.git init
Init是initial的簡寫,初始化的意思。
我們要使用Git,第一步就是需要初始化一個版本倉庫,使用git init即可。
在當前項目目錄下,新建一個版本庫時,會自動創建一個.git的隱藏目錄。
疑問:我是先建版本庫,還是先建項目的目錄結構呢?
好的做法,就是先建 版本庫。然后再進行項目開發。
.git目錄用git用來控制版本的,不要在這個目錄中做任何操作。
開發的時候,將其隱藏即可。
3.git add
作用:將工作區中的 文件 添加到 暫存區中。
添加的時候,可以一次性添加多個,每一個直接使用空格隔開即可。
如果在一個文件夾下,有多個文件,如下:
可以直接是文件夾名,一次性添加,如下:
當然,在實際開發的時候,可能在后續的開發過程中,新增了一些文件,最好是單獨添加。
4.git commit
作用:將 暫存區中的 內容,一次性添加到 mater分支。
使用的時候,需要注意:
一定要添加說明,有兩種方式:
l git commit -m 說明文字 (提倡)
l git commit 要結合 vi編輯器
如果直接寫上 git commit ,那么它會彈出vi編輯器的界面,
Vi編輯器的模式:
編輯模式,按i進入,
命令模式,按esc
在命令模式下,先輸入 : 然后是命令,比如要保存並退出。w保存,q退出。
: wq 就可以保存退出。
5.git status
查看狀態
任何時候都可以查看 版本庫的狀態。
6.git reset
Reset,重置。
作用,回退到指定的版本。
基本用法
需要指定兩個東西:
l 回退到哪個版本,使用commit_id來指定,或者 HEAD^、HEAD^^、HEAD^^^、HEAD~n
l 使用哪種方式,硬回退 --hard,軟回退。--soft
為了測試效果,使用硬回退。
Git reset --hard commit_id
查看當前版本
現在,向會退到 第二個版本。找到它的commit_id,如下:
65c7825f56ba6f3e8de7d075b14c42e51d884787
此時,就回到了第二個版本的初始狀態。
要注意,此時第三和第四個版本的文件,雖然已經不在工作區,但是它還保存在版本庫中。所以可以隨時再回退。
比如,我需要回到第三個版本。
注意,這個是相當於回到當前版本的未來版本。使用git log 只能查看當前版本之前的所有版本。
如何獲取所有版本的commit_id呢?
針對這個需求,需要分兩種情況:
l 第一,git bash窗口沒有關閉,使用前面查過的commit_id
l 第二,git bash窗口關閉。比如,昨天做的操作,今天后悔了。 使用 git reflog
如果是第一種情況,直接找
012ae56a05e5e9d7ddcb2b97a62e68a9820b2abf
使用
直接使用 git reset 命令即可。
五.協同開發
1.多人協作原理
2.多人協作實現
基本流程如下:
l 創建一個git裸服務器 (git init -bare)
l 從裸服務器將版本庫克隆至本地(git clone )
l 本地常規操作
l 推送版本至服務器 (git remote + git push origin master)
l 從遠程服務器拉取版本(git pull)
最好的方式,就是有一個服務器(linux系統下搭建的服務器)
先在windows上面模擬協同開發。
(1).創建git裸服務器
選定一個目錄,
使用git init --bare
創建如下:
repository :倉庫
此時,我們的裸服務器已經創建完畢。
注意,和使用git init相比,有區別
相同點:生成的文件是相同的,除了.git目錄本身。
不同點:init會生成一個.git目錄,而git init --bare不會。
沒有.git目錄,也就意味着它不能在當前這個目錄實現版本控制。
所謂的裸服務器,就是指這里只有版本庫的內容,沒有工作區。
所以,對於git服務器而言,所要做就是 創建好 版本庫。沒有其他的。
(2).從裸服務器將版本庫克隆至本地
甲需要開始開發了,一開始需要將服務器上的版本庫 克隆至自己的電腦。
git clone 地址
在windows下的本機上,地址直接使用 絕對目錄即可。
進入git-server目錄,發現已經有了.git目錄,
此處,我們就不需要在本地再進行 git init的操作了。
此時,有一個說法:
創建一個版本庫,至少有兩種方式:
l 在本地使用 git init創建
l 在服務器上 clone 一個
對於甲而已,現在就可以 完成常規的開發。
現在所有的版本控制都是在本地進行的。
注意,如下錯誤:
對於其他程序員,完全可以同步這個操作的。
乙程序員來了,需要開始工作了。
有了版本庫,那么乙就可以在這個目錄下,進行常規開發以及本地的版本管理
.........
長時間的開發,自己本地的版本控制
........
(3).拉取和推送版本
甲將自己的最新的版本,推送至git服務器。
服務器在哪兒?
git remote
怎么推送呢?
git push origin master
此時,甲已經將其最新的版本庫 推送至 git服務器。
此時,乙程序員,並不能夠看到甲的工作內容。
實際上,其他同事,需要從git服務器上,拉取最新的內容才可以。
有一個網站:stackoverflow
基本上我們在開發時遇到的90%以上的,都可以在上面找到准確的答案。
在上述的幾個流程中,
前面三個流程,如下:
創建一個git裸服務器 (git init --bare)
從裸服務器將版本庫克隆至本地(git clone )
本地常規操作
是沒有什么問題的。
其中,創建裸服務器不是由開發人員來完成。是項目負責人干的事情。它會給我們一個地址。
做為開發人員,需要 使用 git clone命令從 git服務器 克隆版本庫到本地。
然后在本地進行常規的管理。
在開發完一個階段之后,需要將本地的 版本庫 推送到 git服務器。
推送的時候,要注意你的版本是最新的,還是說不說最新的。
如果是最新的,很簡單,直接推送 git push origin master
如果不是最新的,需要保證你在推送之前那一刻是最新的,先從服務器拉取最新的--git pull,然后再推送 git push origin master。
但是,如果是第一次在拉取的時候,可能會出現,拉取失敗的錯誤。加上--allow-unrelated-historeies即可。
為了確保每次推送時沒有問題,一般操作就是先拉取后推送。
3.分支
(1).什么是分支
你可以創建一個屬於自己的分支,別人看不見,還繼續在原來的分支上工作,而你在自己的分支上進行開發,等開發完畢,合並即可。
默認情況下,git中只有一個分支 master。
Branch--分支
在當前分支上的版本控制,如圖所示:
(2).分支的基本操作
l 查看當前分支 (git branch)
l 創建分支 (git branch 分支名)
l 切換分支(git checkout 分支名)
l 分支上的常規操作
l 分支的合並 (git branch master + git merge 分支名)
l 分支的刪除(git branch -d 分支名)
查看當前分支
注意 *,表示如果有多個分支,當前是在哪個分支上
創建分支
切換分支
接下來,所有的git相關操作都是基於 b1 這個分支的。如
相當於:
查看b1分支的log
查看master分支的log
當在分支上,完成了這些操作。
可以將其合並到master上面去。
合並需要兩步:
l 切換到主分支,git checkout master
l 在主分支上,合並其它分支,git merge 分支名
合並之后,相當於
最后,將分支刪除掉
git branch -d 分支名
就相當於
六.GitHub
GitHub不是Git
Git是一個版本控制系統,是一個工具。提供了諸多的一些命令,從而完成版本的控制以及協作開發。
GitHub是一個網站,基於Git的,主要的作用就是代碼托管。
托管有這么幾層含義:
l 將自己平時寫的項目保存到GitHub上。
l 可以作為Git服務器來使用。
第一件事情,就是注冊賬號。
創建版本庫
現在已經有了一個版本庫,
我們就可以在當前版本庫中,添加文件,添加版本。
可以新建文件
在這個操作中,對應到Git操作,應該有哪幾部?
第一,在項目目錄下新建了一個文件
第二,將文件使用git add添加到暫存區
第三,使用git commit 提交到版本庫的主分支。
作為git服務器來使用。
首先在GitHub上創建一個倉庫。
然后,在本地使用 git Clone 將版本庫 克隆到本地。
使用git clone命令即可。
然后,在本地進行常規開發,並進行常規的版本控制。
完成之后,需要將最新的版本庫,推送到GitHub
首先要找到遠程的 git服務器的名稱,就是origin
使用push推送之
對於這個過程,重復操作即可。
當然,如果有多個用戶同時進行協同開發,就需要注意,在push之前,需要pull一下。
總結:
Git 是什么?
是分布式版本控制系統。
分布式
版本
軟件從開發的第一天,到后期的不斷更新,其中每一個節點都是一個版本。
可以干什么?
對版本進行管理,便於開發的時候,更好的維護項目。
團隊協作開發
常規使用
創建版本庫:git init / git clone url
在本地git版本庫進控制
l git add
l git commit
l git reset
l git log/git reflog
l git status
l git config
l git branch
如果在gitHub網站上創建分支,是fork
Fork的意思是叉子
作業:
l 先注冊GitHub賬號。
l 將自己的項目托管到GitHub上。
l 利用GitHub結合Git嘗試團隊開發。
接下來,就可以 在自己的簡歷中復制這一行:
熟練使用Git進行項目的版本控制和團隊協作開發。
問:在使用Git的時候遇到什么問題沒有?
版本沖突。
兩種情況:
第一,在推送的時候,自己的當前版本不是最新版本,此時先拉取,再推送。
第二,如果多個程序員在編輯同一個文件,所以需要商量一下,讓其中先完成,push,另一個人再拉取,修改,然后在push。
大眾化簡歷:
精通/熟練/了解
HTML5、CSS3、jquery
遵循w3c標准/規范,注重語義化,快速進行web 頁面
有良好的編碼規范(注釋,命名規范)
使用Git對項目進行版本控制以及團隊協作開發。
對js有深入的了解,可以使用js來實現各種效果,熟悉oop。
能夠使用HTML5、css3、zepto進行web app開發。熟練使用jquery mobile快速進行web app開發。
了解Angularjs
BootStrap
熟悉Node.js
熟練使用Ajax進行異步的交互。
定制建立
投其所好。
看着了哪家公司,先看人家的招聘要求。
對號入座