Git 版本控制 (使用教學)

37
ē£à 101502520 過Ƥ 2014/08/20 Git ÄjÈ

Transcript of Git 版本控制 (使用教學)

Page 1: Git 版本控制 (使用教學)

101502520 過 2014/08/20

Git ⼰己

2014/12/20
Page 2: Git 版本控制 (使用教學)

⼰己 ⽅方

Page 3: Git 版本控制 (使用教學)

他 ...

• 得⼀一要⽅方

• 們 是⽅方

• 是 是 還

Page 4: Git 版本控制 (使用教學)

他 ...

• ⽅方

• ⽅方

• 是 還

Page 5: Git 版本控制 (使用教學)

⼰己 就 ⽅方

Git 版本控制就像是一種高級的存檔機制。開發到一個段落,就可以如存檔一般,提交這次的檔案變動,並附上提交訊息。
Page 6: Git 版本控制 (使用教學)

⼰己• 下

• 下

• 下 他

• 了 他 點

• 果

• 新 你 你

透過 Git,我們還可以十分清楚專案整體、各個分支的發展狀況例如: 哪個分支合併了哪個分支 哪個夥伴最近做了什麼事情除此之外,透過這個提交機制,Git 可以: 比較檔案變動的差異 回朔到先前的版本 創立新的分支,並輕鬆合併
Page 7: Git 版本控制 (使用教學)

Git 這

• 這

• git config --global user.name “Your Name”

• git config --global user.email “[email protected]

• git config --list 在 這 都

• ⽤用⼼心 Pro Git - 這 Git

Page 8: Git 版本控制 (使用教學)

Git

• 他 下 無 git init git repository (新⾃自 .git 種)

• .git 種 能 出

• .git/HEAD

• .git/refs/

• .git/HEAD 樣很 你

• .git/refs 種 他 你 tag .git/refs/heads/master master 你

SHA

• 能 git checkout 每 reset 和

Page 9: Git 版本控制 (使用教學)

Git ⼤大更• working directory

.git 種現以 IDE

⼤大更

• git directory(repository) .git 種 git 下

• staging area 沒 三⼤大更 git

commit 下時 他

他 staging area 機

• git repository 下 working directory

Page 10: Git 版本控制 (使用教學)

Git 他 來

Page 11: Git 版本控制 (使用教學)

在 來 git status

• git status 和 來

• 做

• 你 master

• master 那origin/master下 之

• 他 ⼤大

• staging area commit 他

• 們 staging area 他

• git家回 他

• git status -h 在

Page 12: Git 版本控制 (使用教學)

下 git add & git commit

• 他( ) staging area

• git add <file/directory> <file/directory> … # 他 種

• git add -u # 家回分 他

• git add -A # 家回分 家回 他

• staging area 他 commit

• git commit

• git commit -m “commit message”

Page 13: Git 版本控制 (使用教學)

他 git rm

• git 家回 他 git repository git rm

• git rm <file> # 他 working directory staging area

• git rm <file> --cached # staging area他 working directory 他 家回

Page 14: Git 版本控制 (使用教學)

什 他 .gitignore

• 他 我 git 家回 做 IDE 這 每後真 這 ⼜又 真 他 對 .gitignore 他 這

• 這 更 什 沒

• git config --global core.excludesfile ‘~/.gitignore'

• ⽤用⼼心 Pro Git - ⼜又#什 他

Page 15: Git 版本控制 (使用教學)

⾃自 你 git branch

• ⾃自 你你 分地機 你

• git branch <name> 最 ⾃自 你 git checkout <name> 不到 你

• git checkout -b <name> ⾃自 你不到

• git branch -a 後 那 你

• git branch -h

Page 16: Git 版本控制 (使用教學)

新⾃自能 git tag

• 能 (lightweight) 後然(annotated)

• 能 能

• 後然 能 沒 Git (麼)

• ⽇日 想 新 後然 能會

• git tag -a <name> #新⾃自後然 能

• git tag <name> #新⾃自 能

• 能 個 能 v1.0

• ⽤用⼼心 Pro Git - 能

能 你

Page 17: Git 版本控制 (使用教學)

在 下 git log & git diff

• git diff 在 staging area 他

• git diff --cached 在 他 後 staging area

• git difftool 點 得⼀一在 他

• git log 在 branch 下

• git log -p 在 branch 下 後

• git log --graph 在 commit tree

• git blame <file> 在 他 下

RueianOneecom
可以查看 staging area 的檔案變動
Page 18: Git 版本控制 (使用教學)

動 git stash

• 你

git stash 動

• git stash list 在 動

• git stash apply 動

• git stash drop 動

• git stash pop

• ⽤用⼼心 Pro Git - Stashing

Page 19: Git 版本控制 (使用教學)

git cherry-pick

• git cherry-pick <SHA> <SAH>…

• cherry-pick commit

HEAD

• cherry-pick conflict 就 中他 staging git

cherry-pick --continue --abort

Page 20: Git 版本控制 (使用教學)

不到 你 git checkout

• git checkout <branch/SHA> HEAD (.git/HEAD) 最 working directory

不到 你 commit tree

• 做 git checkout master .git/HEAD ref: refs/heads/master

• git checkout <SHA> HEAD detached HEAD 來你 ⼦子 SHA git branch git checkout -b dangling commit 新⾃自你

Page 21: Git 版本控制 (使用教學)

開 下 git reset

• git reset <SHA> 你 HEAD (.git/refs/heads/<branch>) 這 detached HEAD 來沒這 .git/HEAD

• git reset HEAD~2 你開 unstaged 來們 對 git add staging area

• --hard 沒 會 working directory

• git reset 開 開 reset reflog 在 開 SHA git reset <SHA> --hard

Page 22: Git 版本控制 (使用教學)

git checkout git reset 點

Page 23: Git 版本控制 (使用教學)

git reset & checkout

• 三 他 兩 reset checkout HEAD 你 HEAD staging 他

staging 他 git status 了

Page 24: Git 版本控制 (使用教學)

果 下 git revert

• git revert 果 commit 果做 下 A->B->C

git revert B A->B->C->D revert

• git revert HEAD~2 果

• git revert conflict 中 他 git add staging 對 git revert --continue

git revert --abort revert

Page 25: Git 版本控制 (使用教學)

git revert git reset 點

Page 26: Git 版本控制 (使用教學)

去發 git rebase

• rebase 你 機 你你 你

你 rebase 中 就 給好只你 你 機 中

• rebase 就 git rebase -i HEAD~3 情 ⼀一

情 ⼀一 每機每 知每 多們

• ⽤用⼼心 Pro Git - 去發

Page 27: Git 版本控制 (使用教學)

git rebase 了道

Page 28: Git 版本控制 (使用教學)

git commit --amend

• 對 git rebase -i HEAD~ git commit --amend 下

• git commit --amend staging area 機

沒 staging area

• git rebase 多 git commit --amend ⼈人 SHA 都

那⽽而⼜又 去發好上

Page 29: Git 版本控制 (使用教學)

git reflog & git fsck 下

• reset, rebase, commit --amend 和 下⼿手 ⽅方 Git

• git HEAD 會 成下 git reflog git log -g 在 HEAD 下

• 對 git reflog 在 SHA git reset --hard <SHA> git merge <SHA> 機 git branch <name> <SHA> ⾃自 下 你

• git reflog SHA git fsck --full 在 dangling commit SHA 對

• ⽤用⼼心 Pro Git - 多

Page 30: Git 版本控制 (使用教學)

機 你 git merge

• 你 git merge

你 機 你

• 機 --no-ff fast forward

對 merge commit 你 機 你

Page 31: Git 版本控制 (使用教學)

新 得 git flow

• git flow git 得如 道 裡 得

• 你

• master: 有 來

• develop: 你

• 你 你

• feature: develop 你 機 develop

• release: 看 release 們 bugs develop 機 master develop

• hotfix: 們 bug master 機 master develop

Page 32: Git 版本控制 (使用教學)

那⽽而⼜又 git remote

• git repository 那⽽而⼜又給好

⽣生 Github Bitbucket 為三好 這 Gitlab

• git remote -v 他這 那⽽而⼜又

• git remote add <name> <url> 那⽽而⼜又

• git remote -h 在

Page 33: Git 版本控制 (使用教學)

那 git push

• 那⽽而⼜又

• git push -u <remote> <branch>

• git push -u 你 那 你這你家回 upstream

• 做 git push -u origin develop develop origin develop 這 家回 那 origin/develop

• 你 那 做 rebase push 那 -f 那 你

• 做 git push -u gitlab feature/foo -f

• git push -h 在

Page 34: Git 版本控制 (使用教學)

那⽽而⼜又 git clone

• git clone <url>

• git clone 那 repository 後 git 下 這 remote

• clone 對 git push 那

• clone git checkout <remote-branch> git新⾃自 你 remote 你也 這

家回 upstream

• git checkout -b <branch> --track <remote>/<branch>

Page 35: Git 版本控制 (使用教學)

git fetch & git pull

• git fetch <remote> 那 你你

• git pull git fetch git merge git fetch 那家回 你 機

• 你 那 你機 ⼈人 merge commit 新

git pull --rebase rebase merge

Page 36: Git 版本控制 (使用教學)

時• git 的 時 道⼩小 做 SHA

• “~” “^” 時 做

• HEAD^2 merge commit

• HEAD~3

• HEAD@{2} HEAD

• 對 “A..B” 時 B 你 A 你

• 對 “A…B” 時 B 你 A 你

• ⽤用⼼心 Pro Git - 時們

Page 37: Git 版本控制 (使用教學)

次 可

• Git

• Git

• Pro Git

• GitHub Cheat Sheet PDF

• Git Concepts Simplified by Sitaram Chamarty