2012年5月28日 星期一

GIT 使用心得

沒辦法 很多東西我都要自己來用
我一直覺得這個Git 是一個蠻夯的東西
所以我決定要來玩玩

我目前用的電腦是win 7
所以我就去官方下載了
我是使用msysgit 的版本
 (原意就是在windows理會跳出命令列 使用git xxxx等等的來控制版本 原因之一 回家後我還是在使用linux和macos 所以裝這個版本幾乎通吃)

也可以使用TortoiseGit (傳統的ui控制介面來達到版本控制的方式)

======================================================================

首先我們要知道GIT是甚麼?

Git就是一套版本控制軟體,類似一個SVN的中心式版本控制,git是分散式版本控制,幾乎很多事情都在本機端處理.舉例來說,我在無網路的狀態下做commit,未來有需要做merge的時候,在跟master做merge的動作就好了.

每個開發者都有自己的repository(Repo:倉庫)
只要安裝完上述的工作後,你點一個空的資料夾,就會出現兩個選項,bash(命令列)和gui,bash就是命令列操作模式,gui是圖形操作介面.

簡單的使用介紹:(win7)

一般我們會開一個資料夾.點選右鍵,選擇Git Bash Here,就會跳出命令視窗,你所在的資料夾位置就是在你點擊右鍵,開啟命令視窗的資料夾裡面.一般要使git變數,就要打git init,會在working directory下建立.git目錄,裡面放的是git repository的檔案,有了這些檔案,你才可以在這個working directory裡做git的操作。

@@@以下是比較常用的git方式

$git add . (add *)
        當你新增了一項檔案,想要commit上去,新手常犯的錯誤,每次都會跳出Untrack files,原因是因為你沒有去做add這個指令列.意思讓檔案們進入所謂的staged狀態,才能接著把它們commit進Repo中.

$git add 主檔名.副檔名
        個別的檔案加入staged.

$git reset 主檔名.副檔名
        有些檔案你不想要再讓它受到版本控制了,也就是要把它unstage.

$git diff
        檢查版本裡檔案內容的差異.(文字檔就有很明確的比對)

$git commit, git commit -a (automatically in one step) :
        跟svn意思相同建議還是要註解,第一行標題,第二行內容

$git status
        知道目前Repo中的檔案們到底是什麼狀況,到底誰要add,誰要commit.

$git log
        檢視一下這個Repo之前commit的歷史記錄.

$git checkout xxxx (xxxx版號前四碼) 或著switch到分支版本xxxx
         此checkout並不是把專案抓下來的指令,一般常使用svn的人會誤解其意.之後pull clone fetch這些指令才是把專案抓下來的方法.


$git clone url [mast]:
        會把遠端的repo整個專案抓下來,放在目前路徑下的新目錄中.(所以不需要先把新目錄建立成Repo,就可以整包抓下來,隨包附上.git目錄).

$git pull url [mast]:
        會把遠端的repo整個專案抓下來,跟你目前所在的Repo及所用的Branch作合併(Merge),此指令等同Fetch+Merge.

$git fetch url [mast]:
        會把遠端的repo整個專案抓下來,但不跟你目前所用的branch合併,而是放在本地中的另一個Brance(remoteBranch).


$git remote add origin url
        新增 url 的識別子,以後就可以直接在url處輸入origin(你所設定的編號).

$git init --bare
       這個目錄不會有.git目錄,而是把原先.git目錄中的東西都放進來,而且你日後在這個目錄中不會看到你的程式檔案.比較常用於git server,到時你只要指定這個專案裡面的位置即可pull出來專案.

目前是把git server架在dropbox上,做一個自行備分的系統,也比較有隱密性的效果.
一般還有就是把資料備份在github上,免費版是會公開給大家看其內容的,所以選擇上因人而異囉.教學
要不然就是自己架git server來用.


     





沒有留言: