進度條

【實體課程】WordPress 跨界網站接案講座暨工作坊 | 開源研究室 x 進度條線上課程

開源研究室 x 進度條線上課程,台北場盲鳥票開賣中!! 至 11/08 (日) 23:50 為止喔!購票與詳情請看「KKTIX 購票頁面」或「進度條文章

[Git][教學] 01 - Git 介紹與在Windows系統下安裝

簡介Git 版本管理以及在Windows系統底下的安裝方式。

作者: 進度條編輯群 更新日期:

此文章也有影片介紹,可以搭配影片一起學習!

01. [Windows]在Windows上面安裝Git指令 (所屬課程)

02. [Windows] git與mingw64基本指令 (所屬課程)


以下正式開始文章


Git 是一套Source code 版本管理的工具"程式",學習使用版本管理工具是相當方便的。

 

寫程式做專案最大的噩夢就跟寫文章一樣,寫了很久但沒儲存,或是一改再改後還是覺得原來的好,結果想要重現唯一辦法只有重寫一次。

 

還有一種情況就是寫的程式有點大,不是一天兩天搞得定的,說不定還要以月來計算,有時候照著規格寫了幾個星期,突然規格因為不可抗力改了,或是發現嚴重錯誤要大改。一般情況,可能就必須要每支檔案都去看,實在是相當的麻煩,重複的工,而且沒產值,因此就形成了版本管理的概念。

 

當然以上是針對一個人的情況,一個團隊就會有更多的問題,下面就不一一細數。網路上很容易就可以查到使用版本管理的好處與必要性。

本文將要說明的是如何安裝Git這個工具(免費),當然你還有很多選擇,比方說svn(免費),或其他我沒用過的。亦或是選擇每一天使用壓縮檔備份,然後使用Beyond Compare之類的比較軟體,(Beyond Compare不是免費軟體喔!!) 或是配合linux 原始的diff 和 patch 功能。

 

但因為現在好像比較流行git,例如Android 的發怖方式,而且有 GitHub 這個網站提供免費服務(但有其限制,本文不對其做相關介紹,請參照其他文章),所以這系列將介紹git。

 

本篇文章目的 : 在Windows底下安裝Git

1. 下載Git

進入官網 http://git-scm.com/

 

 

它會自動偵測你的系統,我下載的時候上面顯示著Windows與版號,當時的版本是2.14.1(用最新的即可),不過其實沒太大差異,Git已經滿穩定的了。點選後會跳頁,然後自動下載,如果沒有自動下載可能是被防火牆或是瀏覽器擋掉了。

 

 

2. 安裝git

基本上一直按Next,Next,Next也是可以安裝的好,主要的選項都是關於使用習慣與介面操作的選擇。接下來的步驟是我習慣的方式,其他的選像我也不知道幹麻用的,有興趣可以自己試看看。

點一下Downloads for Windows後會出現下面的畫面。

 

 

 

 

 

 

 

 

 

 

 

Next到這個步驟後就按Install,開始進行安裝。

 

 

 

 

安裝完畢後按Finish。

 

 

 

 

雖然截圖很多好像很厲害,但其實我也沒改什麼。結束後桌面上應該會多一個Git Bash的icon。

 

 

 

3. 建立要被檔案管理的檔案

 

首先先在"桌面"上自己用滑鼠右鍵隨便建立個資料夾,例如 Test123。

在裡面建立一個txt檔,例如Readme.txt,裡面隨便打點內容,比方說 123456
(這些步驟都跟git 無關)

 

 

4. 執行Git Bash

在桌面上的Git Bash的icon 點兩下後執行,進去後會是類似linux 介面,這是因為這git 是架設在 mingw 上,所有的指令當然是以類似linux的方式執行。


一進去預設會是你的使用者的家目錄

C:\Users\<你的使用者名稱>

比方說我是 C:\Users\jamie 。如果用檔案總管進入同一個資料夾的話就會是 電腦 -> C:\ -> 使用者 -> <你的使用者名稱>

 

以下為了方便溝通,先講解一下會用到的指令

$字號不需要自己輸入,把它當成開頭就好

 

如果想查詢自己在哪個目錄的話,可以使用指令 pwd

$ pwd

這樣 會顯示/c/Users/<你的使用者名稱>

 

 

列出資料夾底下所有的檔案可以用ls

$ ls

MinGW預設是不支援中文,所以你會看到很多XXXX開頭的檔案

 

清空文字可以下 clear

$ clear

 

 

進入資料夾的指令是 cd

比方進入桌面

$ cd  Desktop

 

 

覺得麻煩的話可以用 tab鍵輔助,比方說輸入$ cd Desk 後按tab鍵,他就會自動幫你補完成 $ cd  Desktop.ini。

當然 你也可以只$ cd D ,但因為以'D' 開頭的可能很多,所以不會幫你自動完成。

這時候你可以連按兩下tab鍵 他就會顯示所有你目前所在的資料夾底下有的以 'D'為開頭的檔案。如果你鍵入的是 $ cd De 他就會去找 'De' 開頭的檔案。

 

 

上面說的指令其實都是linux指令,沒辦法,畢竟git是先出現在linux上的。

使用git bash 進入我們建的Test123

$ cd Desktop

$ cd Test123

這時候使用指令 ls 應該會看到 Readme.txt

$ ls

 

 

從下一步開始才是跟git 有關

 

5. 將Test123 初始化,變成git Repo,也就是git 的倉庫

$ git init  

 

 

6. 將 Readme.txt 加入版本管理

$ git add Readme.txt      

(指令意義: 將Readme.txt "的改變" 加入版本管理)

 

或是可以改下這個指令

$ git add -f --all               

(指令意義: 將目前所在的資料夾裡 "所有的檔案" "的改變" 強制 加入版本管理)

 

這裡用"的改變" 是因為,git add 指令不完全是,將某個檔案加入版本管理,而是看目前git的記錄和目標檔案的內容有沒有差異,有的話就會加進去。

我們因為剛初始化,所以git 裡面沒有紀錄,因此比對的結果會是整個檔案都不在,加入整個檔案。

 

7. 執行指令

上一步的git add 並不會直接寫入git 的記錄檔,而是會被另外記錄起來.

等到使用者(也就是你)下 git commit 後才會一次執行寫入所有的指令。一般我們使用  

$ git commit -m "<你想說的話>"。

 

接下來我就以

$ git commit -m " add Readme.txt"

來示範,然後就會出現下面的畫面:***Please tell me who you are....等

 

原因是Git在做版本控管的時候,會需要紀錄是誰Commmit(提交)這一個版本的程式碼,在提交前需要提供Name(名稱)與 Email,這邊寫入的名稱與 Email會是全域(global)的,

所以你以後提交新版本都會顯示這個名稱與Email。當然這兩個值是可以隨時改的,不過改過以後前面的版本不會一起被更改。

 

所以說我們就照上面寫的把Name與Email給設定進去,輸入指令

$ git config --global user.email "<你的Email信箱>"。

 

 

再輸入$git config --global user.name "<你的名稱>"

 

 

設定完後我們再將其Commit(提交)一次
輸入指令$git commit -m " add Readme.txt"
出現以下的畫面就是確定Commit完成。

 

 

8. 修改檔案後再做一次
用筆記本將原本Readme.txt 內的 123456
改成 abcdefg 後儲存。

 

 

再打開桌面上的git bash,輸入:


$ git add Readme.txt


之後再輸入
$ git commit -m "<你想說的話>" 這個指令


這裡的範例我是輸入$ git commit -m "frist chang"
這樣就加入了第二筆紀錄

 

 

9. 顯示過去紀錄

$ git log

 

就可以看到所有的紀錄,但看不出改了什麼,每條紀錄都會有一個編碼(版號),比方說 commit a35ed2c...............很長的編碼

 

 

這時就可以使用$ git show 後面加上前四碼(或四碼以上)這個指令
(怕流水號相同可以打多一點),輸入

 

$ git show a35e

就會顯示出那一條紀錄的變動

 

 

 

上圖顯示 在這一次變動中 Readme.txt 的第一行 -123456 (減去123456) +abcdefg (加上abcdefg) 
其他詳細的內容可以去查linux 的 "diff" 指令,git 是包裝這個指令來執行的。

 

10. 回到過去某一版

為了怕搞混,這裡記得先把記事本關掉。

首先輸入$ git log 查詢上一個版號

(這裡查到的上一個版號是5f5bd1)

 

 

接著使用 $ git reset --hard <版號> 這個指令,其中 --hard 一定要加,這代表自己當前的檔案。

如果不加的話就只有版號回復,目前的檔案內容是不會變的。

所以輸入:

 

$ git reset --hard 5f5bd1

使其回到第一個紀錄,之後再打開記事本檔Readme.txt查看,裡面的內容是不是已經變回了123456。

 

 

然後我們再用git log 去看,突然發現紀錄變少了!! 

 

 

那我們要回到 abcdef 的版本要怎麼辦呢?

 

11. 回到未來的版本

git log 其實只能看到過去的版本

因為我們已經reset了,所以"現在"已經改變了,abcdef 已經變成 "未來",所以我們要用的指令變成觀看"未來"的指令。

 

$ git reflog

就可以看到我們之前的commit 了

 

 

記起來它的版號,一樣執行

$ git reset --hard <版號>

 

如上圖顯示版號為a35ed2c

所以輸入指令

$ git reset --hard a35ed2c

 

之後回去打開記事本檔Readne.txt查看裡的內容(記得先關掉記事本再重開喔!!)

這時就會發現內容變回來abcdef了。

 

 

如果下reset發現沒有變回來,就表示忘了加 --hard 

直接在下一次重新輸入指令時記得加上 --hard 就可以了。

 

下一篇

[Git] 02. 開始使用 GitHub, 註冊與建立repo。


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊