Git 版本控制 (使用教學)
-
Upload
jui-an-huang- -
Category
Software
-
view
538 -
download
3
Transcript of Git 版本控制 (使用教學)
101502520 過 2014/08/20
Git ⼰己
⼰己 ⽅方
他 ...
• 得⼀一要⽅方
• 們 是⽅方
• 是 是 還
他 ...
• ⽅方
• ⽅方
• 是 還
⼰己 就 ⽅方
⼰己• 下
• 下
• 下 他
• 了 他 點
• 果
• 新 你 你
Git 這
• 這
• git config --global user.name “Your Name”
• git config --global user.email “[email protected]”
• git config --list 在 這 都
• ⽤用⼼心 Pro Git - 這 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 和
Git ⼤大更• working directory
.git 種現以 IDE
⼤大更
• git directory(repository) .git 種 git 下
• staging area 沒 三⼤大更 git
commit 下時 他
他 staging area 機
• git repository 下 working directory
Git 他 來
在 來 git status
• git status 和 來
• 做
• 你 master
• master 那origin/master下 之
• 他 ⼤大
• staging area commit 他
• 們 staging area 他
• git家回 他
• git status -h 在
下 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”
他 git rm
• git 家回 他 git repository git rm
• git rm <file> # 他 working directory staging area
• git rm <file> --cached # staging area他 working directory 他 家回
什 他 .gitignore
• 他 我 git 家回 做 IDE 這 每後真 這 ⼜又 真 他 對 .gitignore 他 這
• 這 更 什 沒
• git config --global core.excludesfile ‘~/.gitignore'
• ⽤用⼼心 Pro Git - ⼜又#什 他
⾃自 你 git branch
• ⾃自 你你 分地機 你
• git branch <name> 最 ⾃自 你 git checkout <name> 不到 你
• git checkout -b <name> ⾃自 你不到
• git branch -a 後 那 你
• git branch -h
新⾃自能 git tag
• 能 (lightweight) 後然(annotated)
• 能 能
• 後然 能 沒 Git (麼)
• ⽇日 想 新 後然 能會
• git tag -a <name> #新⾃自後然 能
• git tag <name> #新⾃自 能
• 能 個 能 v1.0
• ⽤用⼼心 Pro 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> 在 他 下
動 git stash
• 你
git stash 動
• git stash list 在 動
• git stash apply 動
• git stash drop 動
• git stash pop
• ⽤用⼼心 Pro Git - Stashing
git cherry-pick
• git cherry-pick <SHA> <SAH>…
• cherry-pick commit
HEAD
• cherry-pick conflict 就 中他 staging git
cherry-pick --continue --abort
不到 你 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 新⾃自你
開 下 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
git checkout git reset 點
git reset & checkout
• 三 他 兩 reset checkout HEAD 你 HEAD staging 他
staging 他 git status 了
果 下 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
git revert git reset 點
去發 git rebase
• rebase 你 機 你你 你
你 rebase 中 就 給好只你 你 機 中
• rebase 就 git rebase -i HEAD~3 情 ⼀一
情 ⼀一 每機每 知每 多們
• ⽤用⼼心 Pro Git - 去發
git rebase 了道
git commit --amend
• 對 git rebase -i HEAD~ git commit --amend 下
• git commit --amend staging area 機
沒 staging area
• git rebase 多 git commit --amend ⼈人 SHA 都
那⽽而⼜又 去發好上
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 - 多
機 你 git merge
• 你 git merge
你 機 你
• 機 --no-ff fast forward
對 merge commit 你 機 你
你
新 得 git flow
• git flow git 得如 道 裡 得
• 你
• master: 有 來
• develop: 你
• 你 你
• feature: develop 你 機 develop
• release: 看 release 們 bugs develop 機 master develop
• hotfix: 們 bug master 機 master develop
那⽽而⼜又 git remote
• git repository 那⽽而⼜又給好
⽣生 Github Bitbucket 為三好 這 Gitlab
• git remote -v 他這 那⽽而⼜又
• git remote add <name> <url> 那⽽而⼜又
• git remote -h 在
那 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 在
那⽽而⼜又 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>
git fetch & git pull
• git fetch <remote> 那 你你
• git pull git fetch git merge git fetch 那家回 你 機
你
• 你 那 你機 ⼈人 merge commit 新
git pull --rebase rebase merge
時• git 的 時 道⼩小 做 SHA
• “~” “^” 時 做
• HEAD^2 merge commit
• HEAD~3
• HEAD@{2} HEAD
• 對 “A..B” 時 B 你 A 你
• 對 “A…B” 時 B 你 A 你
• ⽤用⼼心 Pro Git - 時們
次 可
• Git
• Git
• Pro Git
• GitHub Cheat Sheet PDF
• Git Concepts Simplified by Sitaram Chamarty