就是我們在程式開發時,常常會遇到一種情形,就是不知道更動這段程式碼會發生甚麼bug,有時加了一些新功能後,才發現bug跑出來,於是想回到之前的版本,這時版本控制系統就派上用場了!
以上是單人開發時的情況,多人開發時情況更複雜,常常會有檔案蓋來蓋去,不知道對方做了甚麼,這時版本控制系統就更重要了啊!
git 內部有三個結構
Working tree ----> staged area ---> repository(內有commit)
git add git commit
為何要有staged area呢,這是因為如果沒有staged area的話,你對working tree內做的所有改變就會在你commit後,全部跑到repository內,為了更好的做到版本控制,所以才會有staged area
git 還有一個重要概念: branch
在中文裡,branch是分支的意思,在程式設計時,如果我們想實驗程式碼,又不想動到目前的程式碼,可以新增一個新的branch,指令如下: git branch branch名稱
以下是git 的常見指令整理:
1. git clone :複製檔案
可從網路連結抓取檔案
2. git init: 在目前的位置建立一個新的repository
3. git log : 把目前repository 的所有commit 歷史都叫出來,但有時會太長,可按q跳出
4. git status: 顯示work tree 的歷史
5. git branch: 產生新的branch(但並未轉至這個branch,若須轉到這個branch,要用git checkout)
6. git checkout : 將目前檔案回到某個commit狀態 or 轉換到某個branch
(1) git diff commit ID1 commit ID2 :比較兩個commit的不同
(2) git diff : 比較 working tree 和 staged area
(3) git diff --stage: 比較 staged area 和most recently commit
8. git merge: 合併branch和master =>可能會產生merge conflict=>需手動處理
merge conflict: 大家動到同一個檔案 電腦不知道誰的才是對的
reference:
1. udacity
2. git help
3. https://git-scm.com/docs/git-merge
沒有留言:
張貼留言