ASTRO Camp Day1 - GIT(01)
GIT 第一堂課
1、關於git - 版本控制系統
如果你問大部份正在使用 Git 這個工具的人「什麼是 Git」,他們大多可能會回答你「Git 是一種版本控制系統」
專業一點的可能會回答你說「Git 是一種分散式版本的版本控制系統」
但這個回答,對沒接觸過的新手來說,有講跟沒講差不多。到底什麼是「版本」?要「控制」什麼東西?什麼又是「分散式」?
這個我們等等都會位大家解答
1-1 什麼是版本
下面三個日期都有各自的資料夾,資料夾就代表三種版本
>
> 2016/2/8 檔案夾有三個檔案
>
> 2016/2/10 檔案夾有5個檔案(多兩個)
>
> 2016/5/8 更改五個檔案中其中的兩個檔案內容
>
*把每個版本以拍照比喻,每拍一張照,英文上叫做快照(snapshot),也就是一個版本就是一個快照
1-2 什麼是分散
分散就是沒有經過一個主要伺服器,散落到每一台電腦裡面資料統整起來就會是完整檔案
ps. CVS(Concurrent Version System)是一種集中式版控系統,使用這個,如果主要伺服器壞掉,就爆炸了
2、git簡介
Git是目前業界最多人使用的版本控制系統之一,他就像時光機,可以讓檔案回到歷史紀錄的某一個時間點
2-1 git 優點
- 同時支援本地及遠端操作(沒有網路也可以)
- 容易與他人共同協做
2-2 git 使用前的一些指令
2-2-1 檢視目前git的設定
> git config --list
2-2-2 設定username 以及 email
> git config --global user.name "YeeChen"
> git config --global user.email "a034506618@gmail.com"
2-2-3 檔案初始化
初始化後會產生一個.git的目錄,這個就是整個git的精華
> git init
2-2-4 刪除某個指定檔案
這個只另可以山除某個指定檔案,不過這個指令有點危險,小心使用
> rm -rf .git # 重複強制刪除.git這個檔案
> r = recursive # 遞迴重複的意思
> f = force # 強制的意思
在根目錄下 git init
–
如果今天不小心在整個電腦根目錄下了git init指令,造成整個電腦檔案都被板控
解決辦法為 - 在根目錄的地方下 rm -rf .git
可以刪掉在根目錄的 .git檔案
–
3、git commit 三個狀態
3-1 做專案的時候,git狀態的改變流程
(1) 產生檔案/修改檔案
(2) 工作目錄
(3) git add index.html
(4) 暫存區域
(5) git commit -m “add commit”
(6) 儲存庫
3-2 實際範例
這邊實際創立一個檔案,來看git的狀態改變
3-2-1 touch - 產生檔案、預設工作目錄
當你這個資料夾有再git的控制下,只要產生一個新檔案,這個檔案就會放一份在工作目錄裡面
> touch index.html
3-2-2 git add - 把剛剛新增的檔案,加進暫存區域
> git add index.html
3-2-3 git commit - 把剛剛新增的檔案,加進儲存庫
> git commit -m "first commit"
3-2-4 完整資訊流程
> 工作目錄(working directory) | git add -> 檔案再工作目錄要git add,才會往暫存區域移動
>
> 暫存區域(staging area) | git commit -> 檔案再暫存區域要git commit,才會網儲存庫移動
>
> 儲存庫(本地)
>
> git add + git commit 完,算一個完整的commit(完整的拍一張照片) -> 整個流程做完後,就是做一個"快照"
3-2-5 git status - 確定目前git狀態
這個可以確認目前檔案是在三個狀態鐘的哪一個
> git status
3-2-6 git add .
–
這個意思是把全部東西都放進暫存區域
不過盡量不要使用此功能,除非很了解自己所有的檔案進度到哪
–
3-2-7 git log - 看過往commit歷史紀錄
> git log 看所有紀錄
> git log --online 看最新歷史紀錄
> git reflog 查看HEAD所有移動紀錄