git全部使用步驟


今天要講的內容:項目管理和工具

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分支。

 

使用的時候,需要注意:

一定要添加說明,有兩種方式:

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%以上的,都可以在上面找到准確的答案。

 

 

http://stackoverflow.com/

 

 

 

 

 

 

 

 

 

 

 

 

在上述的幾個流程中,

前面三個流程,如下:

創建一個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服務器來使用。

 

 

網址:https://github.com/

 

第一件事情,就是注冊賬號。

 

 

 

創建版本庫

 

 

 

 

現在已經有了一個版本庫,

我們就可以在當前版本庫中,添加文件,添加版本。

 

 

 

 

可以新建文件

 

 

 

 

 

在這個操作中,對應到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進行異步的交互。

 

定制建立

投其所好。

看着了哪家公司,先看人家的招聘要求。

對號入座

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM