2013年8月31日 星期六

Git 基本用法

Git 是一個分散式的版本控制管理 在一個專案裡面可以建立多個分支給開發者 達到互不干擾彼此的程式碼 最後在交由給管理者負責合併發佈版號 以下介紹基本的用法
CentOS and Fedora 安裝
yum install git

建立專案

mkdir test1; cd ~/test1
git init

從遠端or本機(來源)抓取專案

git clone {git server link} 
git clone ~/test1 (從本機clone) 
git clone ~/test1 ~/test2 (從本機抓取放到test2目錄裡面) 

將untrace files 跟 modified files進入暫存快照區

## untrace files : 第一次新增檔案,還未被git做追蹤,在add做完之後變成以追蹤狀態
git add {file}  (single file)
git add . (all files)

將已儲存快照的檔案 commit 並輸入改版訊息 以便日後做log查詢

git commit 
git commit -a (將modified files儲存快照並且做commit)
git commit -am "{log message}"
更動最後一筆更新,最常見的復原發生在太早提交更新,也許忘了加入某些檔案、或者搞砸了提交的訊息。 若想要試著重新提交,可試著加上 --amend 選項:
git commit --amend  

將專案push到遠端(git server)上

git push origin master
git push origin developer:master (將developer分支的檔案 push 到 master分支裡面)

檔案復原

git checkout t.txt (將修改過的檔案未進快照暫存區的地方還原)
git checkout -- t.txt (將修改過的檔案未進快照暫存區的地方還原)
git checkout HEAD t.txt (從暫存快照區的檔案還原)
git reset HEAD t.txt (從暫存快照區的檔案拉回修改區)

復原上個版本

git reset --soft(可省略) HEAD^ (回到上個版本未commit 的狀態) 
git reset --hard HEAD^ (回到上個版本)
(回到指定的的版本{commit sha1} , 要記得當前版本的sha1 或是下git tag 做當前版本標記,以免還原之後回不去當前版本)
git reset --hard 232adbee544d57087317a909e6f8357475611ceb 

合併

git merge devel (將devel的分支log合併到目前的分支)
git rebase  master (將master的分支包含log 合併到 目前的分支,目前分支的log將會跟master的log一樣)
比較好的開發狀態分支圖

其他指令

(增加遠端的位置)
git remote add origin {link} 
git remote -v (查詢) 
從遠端抓取最新分支,兩者用法不解釋
參考網址: http://ruby-china.org/topics/4768
git fetch
git fetch origin master:master
git pull
git pull origin master:master 

查看當前狀態
git status

分支查詢
git branch 
git branch -a

切換分支
git checkout {branch}

刪除分支
git branch -D <branchname>
git push origin --delete <branchname> PS:(remote)


log 查詢
git log 
git log -all
參考資料: