1. 初始命令
init 初始化倉庫
$ git init
clone 檢出克隆倉庫
$ git clone 倉庫名[http://git.com]
config 配置
$ git config --list #查看配置
$ git config --system user.name #系統級配置
$ git config --global user.name #全局配置,系統用戶級
$ git config user.name #倉庫級配置
help 幫助
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
remot 遠程倉庫
$ git remote -v #查看遠程倉庫
$ git remote show origin #查看遠程倉庫
$ git remote add pb https://github.com/pb #添加遠程倉庫
$ git remote rename pb paul #重命名遠程倉庫
$ git remote rm paul #移除遠程倉庫
2.基礎命令
status 查看文件狀態
$ git status
$ git status -s #狀態簡覽
add 暫存已修改文件
$ git add filename
$ git add -A #暫存所有已修改文件
commit 提交更新
$ git commit -m "commit message"
$ git commit -a -m "commit message" #跳過暫存區,直接提交
push 推送到遠程倉庫
$ git push
$ git push origin master
fetch 從遠程倉庫拉取數據
$ git fetch [remote-name]
merge 合併分支
$ git merge
pull ( fetch + merge )
#用 fetch 和 merge 好了
3.常用命令
diff 查看修改
$ git diff #比較 暫存區-工作區
$ git diff --staged #比較 倉庫-暫存區
log 查看提交歷史
$ git log #查看之前提交版本
$ git log --stat #展示提交的簡略統計信息
$ git reset --hard 版本號 #回滾到上一個版本可
撤銷操作
$ git commit --amend #重新提交
$ git reset HEAD filename #取消暫存的文件
checkout 撤銷對文件的修改
$ git checkout filename
# 會覆蓋工作區文件
# 如果暫存區有改動的文件,則從暫存區到工作區
# 如果暫存區無改動的文件,則從倉庫到工作區
tag 打標籤
複製代碼
$ git tag #查看標籤
$ git tag -a v1.4 -m "my version 1.4" #創建附註標籤
$ git tag v1.4 #創建輕量標籤
$ git tag -a v1.2 9fceb02 #對某次提交後期打標籤
$ git push origin v1.5 #上傳某個標籤,GIT 默認不會 push 標籤到遠程倉庫
$ git push origin --tags #上傳所有不在遠程倉庫的標籤
$ git checkout -b version2 v2.0.0 #檢出標籤
複製代碼
rm 移除文件
$ git rm filename #個人感覺效果同 rm
$ git rm --cached filename #移除暫存區中的文件
mv 移動文件
$ git mv file_from file_to #個人感覺效果同 mv
3.分支命令
branch 創建分支
複製代碼
$ git branch #查看分支,前面帶星號*的,是當前分支
$ git branch testing #創建 testing 分支
$ git branch -d testing #刪除 testing 分支
$ git branch -v #查看每個分支最後一次提交
$ git branch --merged #查看已合併到當前分支的分支
$ git branch --no-merged #查看未合併到當前分支的分支
複製代碼
checkout 切換分支
$ git checkout testing
$ git checkout -b iss53 #創建分支,並切換到新創建的分支
merge 合併分支
$ git merge hotfix #把 hotfix 分支,合併到當前分支
$ git mergetool #圖形化解決衝突的工具
4.底層命令
cat-file 讀取 GIT 倉庫對象
$ git cat-file -p f8a67de1d4bf0d6dbaaaf8990ffe8394e5fa88ee #查看對象內容
$ git cat-file -p master^{tree} #master 分支上最新的提交所指向的 tree 對象
$ git cat-file -t f8a67de1d4bf0d6dbaaaf8990ffe8394e5fa88ee #查看對象類型
$ git cat-file -s f8a67de1d4bf0d6dbaaaf8990ffe8394e5fa88ee #查看對象大小
hash-object 操作 GIT 倉庫對象
$ git hash-object -w filename.txt #把 filename.txt 文件內容寫入 GIT 倉庫
update-index 操作暫存區
$ git update-index --add --cacheinfo 100644 f8a67de1d4bf0d6dbaaaf8990ffe8394e5fa88ee #創建暫存區,並把 blob 對象添加到暫存區
$ git update-index test.txt #更新暫存區
$ git update-index --add new.txt #向暫存區添加文件
write-tree 創建樹對象
$ git write-tree #根據當前暫存區內容,創建樹對象
read-tree 把樹對象讀入到暫存區
$ git read-tree 754a1e2d567bbbcee762a2d7768407f4d3290fc8
$ git read-tree --prefix=bak 754a1e2d567bbbcee762a2d7768407f4d3290fc8 #把樹對象當作子樹讀入暫存區
commit-tree 創建提交對象
$ echo 'first commit' | git commit-tree 754a1e #根據樹對象,創建提交對象
$ echo 'second commit' | git commit-tree 754a1e -p 32b8d2 #創建提交對象時,指定父提交對象
update-ref 創建引用(分支、標籤)
$ git update-ref refs/heads/master 32b8d2
#或者如下直接編輯引用文件,不提倡這麼做
$ echo "32b8d2094acef696efa3ca1b0a29639d97be1684" > .git/refs/heads/master
sysmbolic-ref 符號引用(HEAD)
$ git symbolic-ref HEAD refs/heads/test
#或者如下直接編輯引用文件,不提倡這麼做
$ echo "refs/heads/test" .git/HEAD
遠程引用
#遠程引用是隻讀的,看看就好了
gc 生成包文件
$ git gc
#作用:完整保存最新版文件,歷史版本文件保存差異
#GIT 會根據情況自己執行,一般不需要手動之行