從頭建立 Repository:
mkdir sandbox
cd sandbox
git init
加到Stage
git add <list of files>
git add --all // add all files
git add * // add all files
git add *.txt // add all txt file at current directory
git add doc/*.txt // add all txt file at doc directory
git add docs // add all file at doc directory
git add "*.txt" // add all txt file at whole project
遞交
git commit -m "A message"
Log
Link : Pro git:git log
git log --pretty=format:'"%s" %h %s %d' --graph
Status
git status
Branch 分支
開新分支
git branch [branch name]
// 建立bugWork分支在HEAD的 上 第二parent 上面
git branch bugWork HEAD^^2^
切換分支
git checkout [branch name]
合併分支
git merge [branch name]
// 把Head 放到 A branch後面
git rebase [A branch name]
// 把B branch 放到 A branch後面
git rebase [A branch name] [B branch name]
移動 Commit
// 複製幾個 commit 並且接在你目前的位置(HEAD)下面
git cherry-pick <Commit1> <Commit2> <...>
// git interactive rebase
git rebase -i head~4 --aboveAll
修改
// 取消 並回到head上一個
// local
git reset Head~1
// 取消剛剛的 commit,但保留修改過的檔案。
git reset HEAD^ --soft
// 取消剛剛的 commit,回到再上一次 commit的 乾淨狀態。
git reset HEAD^ --hard
// 取消 產生新的commit,並註記取消
// remote
git revert Head
// 修改最後一次commit
git commit --amend
// 把stage 的檔案unstage
git reset HEAD <file>
// 把修改過的檔案回到未修改狀態
// git checkout -- <file>
Tag
// git tag [version] [commit name]
git tag v0 Commit1
// Head 分離,head指向v0
git checkout v0
git tag -l
// push tags
git push --tags
// or if you are looking to push a single tag:
git push origin <tag_name>
git bisect(一個找尋有 bug 的 commit 的指令)
git describe 可以幫助你了解你離最近的 tag 差了多少個 commit。
git describe <ref>
<ref> 是任何一個可以被 git 解讀成 commit 的位置,如果你沒有指定的話,git 會以你目前所在的位置為準(HEAD)。
// output : <tag>_<numCommits>_g<hash>
// v1_2_gC2 C2 距離 v1 2個commit
Remote
git clone
git fetch
git pull // fetch + merge
git push
git pull --rebase // fetch + rebase
// git push <remote> <place>
// 先到我的 repo 中的 "master" branch,抓下所有的 commit,然後到叫作 "origin" 的 remote 的 "master" branch,檢查 remote 的 commit 有沒有跟我的 repo 一致,如果沒有,就更新。
git push origin master
// git push origin <source>:<destination>
// 把branch foo,push 到 remote 的 master
git push origin foo:master
// 動作:移除remote side
git push origin :side
// 動作:新增local bugFix
git fetch origin :bugFix
git pull origin bar~1:bugFix // 相當於:
git fetch origin bar~1:bugFix; git merge bugFix
Track
// 法1
// 建立一個新的 totallyNotMaster branch 並且它會 track o/master。
git checkout -b totallyNotMaster o/master
// 法2
// 你就會看到 foo branch 被設定成 track o/master
git branch -u o/master foo
// 如果你現在已經 checkout 到 foo 這個 branch 上面了,你就可以省略掉它:
git branch -u o/master
認識Head
Head會藏在目前支線的後面,例如:Master -> X,則Head -> Master -> X
分離Head
// Master -> X
// Head -> X
git checkout [commit name]
移動Head
// 移動到Master的上面
git checkout Master^
// 移動到Master的上上面
git checkout Master^^
// 移動到Master的上面4位
git checkout Master~4
// (強制)移動 master 指向從 HEAD 往上數的第三個 parent commit。
git branch -f master HEAD~3
Setting
# ~/.gitconfig // global 相關設定都在這
git config --global user.name "yume190" // who gets credit for changes
git config --global user.email "yume190@gmail.com" // what email you use
git config --global color.ui true // pretty command line colors
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.lg '--pretty=format:"%h |%d%s [%an]" --graph --date=short'
//看 Git 設定內容
git config --list
git checkout -b SizeClass –track origin/SizeClass
移除已加入的 ignore file
First commit any outstanding code changes, and then, run this command:
git rm -r --cached .
This removes any changed files from the index(staging area), then just run:
git add .
Git learning link
中文教學
- https://github.com/doggy8088/Learn-Git-in-30-days
- http://ithelp.ithome.com.tw/ironman6/player/doggy/dev/1
- http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_tw/
- http://git-scm.com/book/zh-tw
- http://josephjiang.com/entry.php?id=372
- http://ihower.tw/git/
- http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
- http://blog.wu-boy.com/2012/02/how-to-use-git-version-control-for-new-beginner/
英文教學
Slide
- http://www.slideshare.net/littlebtc/git-5528339
- http://www.slideshare.net/ihower/git-and-github-7306407
Git book
互動學習