配置git
git config --global user.name fcj
git config --global user.email fcj@test.com
git config --global color.ui true
git config --list
vim ~/.gitconfig
創(chuàng)建repository
git init
git clone https://github.com/kennethreitz/requests.git
添加提交文件
git status
git add code.py
git commit -m 'init commit'
git三個環(huán)境:working directory(工作區(qū))、staging area(cache或index)疏遏、history
查看git狀態(tài)
git忽略文件:.gitignore
git status -s
[][]表示staging area和working directory的改變
[][M]本地修改沒add
[M][]add后沒有commit
[M][M]上次add沒有commit其掂,且本地已再次修改
git add:從working directory到staging area
git commit:從staging area到history
查看文件差別
git diff:比較working directory和staging area
git diff --staged:比較staging area和history
git diff HEAD:比較working directory和history
簡化git diff信息:git diff --stat
撤銷誤操作
git reset:從history恢復(fù)到staging area
git checkout:從staging area恢復(fù)到working directory
git checkout HEAD:從history恢復(fù)到working directory采够、且恢復(fù)staging area
git commit -am 'add commit':從working directory同時add到staging area故黑,并提交到history:
working directory和staging area:git add <===> git diff <===> git checkout
staging area和history:git commit <===> git diff --staged <===> git reset
history和working directory:git commit -am <===> git diff HEAD <===> git checkout HEAD
刪除和重命名文件
git rm old.py:從本地和staging area刪除文件
git rm --cached code.py:從staging area刪除文件,但保留本地文件
git mv code.py code.go:重命名
等價于:
git rm --cached code.py
mv code.py code.go
git add code.go
暫存工作區(qū)
git stash:最新修改放入抽屜
git stash list:查看抽屜內(nèi)容
git stash pop:從抽屜中恢復(fù)
commit對象
git log
git log --oneline
三種對象:commit、tree傲绣、blob
每個對象都有哈希值
git cat-file -t HEAD
git cat-file -p HEAD
git cat-file -t 對象哈希:查看對象類型
git cat-file -p 對象哈希:查看對象內(nèi)容
tree-ish表達式
git rev-parse HEAD
git rev-parse HEAD~
git rev-parse HEAD~4
git rev-parse master
git rev-parse master~
git rev-parse master~4:定位到commit
git cat-file -p master~4
git rev-parse master~4^{tree}:定位到commit下的tree
git rev-parse HEAD~4:code.py:定位到文件
git cat-file -p HEAD~4:code.py
git show HEAD~4:code.py
git show <===> git cat-file -p
創(chuàng)建和刪除分支
git branch:列出所有分支
git branch tryidea:創(chuàng)建分支
git checkout tryidea:切換分支
git checkout master:切換回master
git branch -d tryidea:刪除分支
合并分支
git checkout -b tryidea:創(chuàng)建并立即切換分支
分支提交后必須合并才可以刪除
git checkout master
git merge tryidea
Fast-forward
git branch -d tryidea
3-way merge:master也發(fā)生提交時