筆者加入了 進度條 線上課程團隊
歡迎大家到這個網站看看喔
https://goo.gl/llGo8Q

本站的文章也會轉過去
本篇文章:  https://goo.gl/jXGhWT
感謝大家支持
=====================================

Git 是一套Source code 版本管理的工具"程式"

學習使用版本管理工具是相當方便的

 

寫程式做專案最大的噩夢就跟寫文章一樣

寫了很久但沒儲存

或是一改再改後還是覺得原來的好

結果想要重現唯一辦法只有重寫一次

 

還有一種情況就是寫的程式有點大, 不是一天兩天搞得定的

說不定還要以月來計算, 

有時候照著規格寫了幾個星期

突然規格因為不可抗力改了, 或是發現嚴重錯誤要大改,

一般情況, 可能就必須要每隻檔案都去看, 然後改

實在是相當的麻煩, 重複的工, 而且沒產值 

 

因此就形成了版本管理的概念

 

當然以上是針對一個人的情況, 一個團隊就會有更多的問題

下面就不一一細數

網路上很容易就可以查到使用版本管理的好處與必要性

 

本文將要說明的是如何安裝Git 這個工具(免費)

當然你還有很多選擇, 比方說svn(免費) ,

Windows 的 Team Foundation Server(免費的好像有限制功能, 需要搭配Visual Studio)

或其他我沒用過的

 

亦或是選擇每一天使用壓縮檔備份, 然後使用Beyond Compare之類的比較軟體

(Beyond Compare不是免費軟體喔!!)

或是配合linux 原始的diff 和 patch 功能

但因為現在好像比較流行git, 例如Android 的發怖方式

而且有 GitHub 這個網站提供免費服務 (但有其限制, 本文不對其做相關介紹, 請參照其他文章)

所以這系列將介紹git

 

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

1. 下載Git

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

gitWin0.jpg  

它會自動偵測你的系統

我下載的時候上面就顯示著Windows 與板號

版本應該無所謂

點選後會跳頁, 然後自動下載, 如果沒有自動下載可能是被防火牆或是瀏覽器擋掉了

 

2. 安裝git

基本上一直按Next, Next, Next也是可以安裝的好

主要的選項都是關於使用習慣與介面操作的選擇

所以接下來的步驟是我習慣的方式

其他的選像我也不知道幹嘛用的, 有興趣可以自己試看看

 

點兩下執行後會出現下面的畫面

gitWin1.jpg

按Next

 

gitWin2.jpg

Licence頁面 表明他是follow GNU licence, 對我們沒有太大的意義, 按Next接受他

 

gitWin3.jpg

安裝路徑, 選一個自己喜歡的就可以了, Next

 

gitWin4.jpg

最下面有一個看不到的我沒有勾, Additional icons 底下的我有勾,

問你是不是要自動幫你建連結, 我是都勾

勾 Advance contect Menu.

 

gitWin5.jpg

這我也直接Next

 

gitWin6.jpg

這我選第一個

 

gitWin7.jpg  

然後finnish

 

雖然截圖很多好像很厲害, 但其實我也沒改什麼.

結束後桌面上應該會多一個Git Bash的icon

 

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

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

例如 Test123

在裡面建立一個txt檔, 例如Readme.txt

裡面隨便打點內容

比方說 123456

(這步驟都跟git 無關)

 gitWin8.jpg   

 

4. 執行Git Bash

Git Bash的icon 點兩下後執行 

gitWin9.jpg  

 

進去後會是類似linux 介面

這是因為這git 是架設在 mingw 上

所以所有的指令當然是以linux的方式執行

 gitWin10.jpg  

 

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

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

比方說我是 C:\Users\obtuseitlearner

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

 

//=========================================================

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

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

 

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

$ pwd

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

gitWin11.jpg   

 

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

$ ls

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

gitWin12.jpg   

 

清空文字可以下 clear

$ clear

 

進入資料夾就是 cd

比方進入桌面

$ cd  Desktop

 

覺得麻煩的話可以用 tab鍵 輔助

比方說 鍵入$ cd Desk 後按tab鍵, 他就會自動幫你補完成 $ cd  Desktop

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

這時候你可以連按兩下 tab鍵 他就會顯示所有你目前所在的資料夾底下有的以 'D'為開頭的檔案

如果你鍵入的是 $ cd De 他就會去找 'De' 開頭的檔案

gitWin13.jpg  

 

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

//===================================================

 

使用git bash 進入我們建的Test123

$ cd Desktop

$ cd Test123

 

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

$ ls

gitWin14.jpg   

 

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

 

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

$ git init     

gitWin15.jpg   

 

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

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

或是可以改下這個指令

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

 

gitWin16.jpg   

 

這裡用"的改變" 是因為, git add 指令不完全是, 將某個檔案加入版本管理

而是看目前git的記錄 和 目標檔案的內容有沒有差異 

有的話就會加進去, 而我們因為剛初始化, 所以git 裡面沒有紀錄

因此比對的結果會是整個檔案都不在, 加入整個檔案.

 

7. 執行指令

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

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

一般我們使用  $ git commit -m "<你想說的話>"

 我就以

  $git commit -m " add Readme.txt"    

來示範

 

gitWin17.jpg  

 

這樣就寫入了

先不要關掉 git bash, 我們做一次驗證

 

8. 修改檔案後再做一次

用筆記本將原本Readme.txt 內的 123456

改成 abcdefg 後儲存

gitWin18.jpg   

 

再使用git bash

a. $ git add Readme.txt 或  $ git add -f --all 

b. git commit -m "<你想說的話>" 

這樣就加入了第二筆紀錄

 

gitWin19.jpg   

 

9. 顯示過去紀錄

$ git log

就可以看到所有的紀錄, 但看不出改了什麼

每條紀錄都會有一個編碼(版號)比方說 commit 6b27c685b...............很長的編碼

 

gitWin20.jpg  

 

這時就可以使用 $ git show 

後面加上前四碼(以上, 怕流水號相同可以打多一點)

$ git show  2dc4

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

 gitWin21.jpg  

上圖顯示 在這一次變動中 Readme.txt 的第一行 -123456 (減去123456)

+abcdefg (加上abcdefg) 

其他詳細的內容可以去查linux 的 "diff" 指令, git 是包裝這個指令來執行的.

 

10 回到過去某一版

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

"$ git reset --hard <版號>"  

其中 --hard 一定要加, 這代表自己當前的檔案, 如果不加的話就只有版號回復, 目前的檔驗內容是不會變的

我們回到第一個紀錄

gitWin22.jpg   

 

$ git  reset --hard 69f841

其中69f841是我用 git log 查出來的

 

這時候再打開記事本看我們的ReadMe.txt

你會發現已經變回123456了

 gitWin23.jpg  

 

然後我們再用git log 去看

突然發現紀錄變少了!! 

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

gitWin24.jpg   

 

11. 回到未來的版本

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

因為我們reset了 所以"現在"已經改變了

abcdef 已經變成 "未來"

所以我們要用的指令變成觀看"未來"的指令

$ git reflog

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

 gitWin25.jpg  

 

記起來它的板號

一樣執行

"$ git reset --hard <版號>"

例如 $ git reset --hard 2dc4013

再去看Readne.txt (記得先關掉記事本再重開喔!!)

就會發現變回來abcdef了

 gitWin27.jpg  

gitWin18.jpg  

 

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

直接在下一次加上--hard  就可以了. 

arrow
arrow
    文章標籤
    git 版本控制 版本管理
    全站熱搜

    IT學習者 發表在 痞客邦 留言(0) 人氣()