Git經常使用命令速查表

用戶信息配置

#全局配置用戶名字和郵箱
git congfig user.name "xxxx" --global
git config user.email "xxx@xx.com" -global

#查看不一樣做用域的配置信息
git config --list --local
git config --list --global
git config --list --system
複製代碼

初始化倉庫

#在已存在的項目初始化倉庫
cd <project-path>
git init

#新建項目並初始化倉庫
git init <project-path>
複製代碼

提交修改

#查看git狀態
git status

#提交某個文件的修改
git add <file-name>
#提交已經跟蹤的全部修改
git add -u
#提交全部修改
git add --all
git add .
#顆粒化提交修改
git add -p

#提交修改到倉庫
git commit -m "<message>"
#直接提交全部的已跟蹤的修改到倉庫
git commit -a -m "<message>"
git commit -am "<message>"
#修改上一次提交
git commit --amend
git commit --amend --no-edit
複製代碼

查看提交歷史

#查看工做區和暫存區之間的區別
git diff
#查看某個文件工做區和暫存區之間的區別
git diff -- <file-name>
#用於查看暫存區和上一個提交之間的區別
git diff --cached
#用於展現工做區和上一次提交之間的區別
git diff HEAD
#用於展現兩個提交之間的區別
git diff <commit-id> <commit-id>

#用於查看全部的提交
git log
#用於查看最近n次提交
git log -<number>
#用於展現每次提交log以及每次的改動
git log -p
#用於展現每次提交log以及每次的改動的簡要統計
git log --stat
#用於展現一行簡略信息
git log --oneline
#用簡單圖形展現
git log --graph

#用於展現上一個提交的修改
git show
#用於展現特定提交的修改
git show <commit-id>
#用於展現特定提交的修改的文件名
git show --name-only <commit-id>

#打印最近操做所對應的commit id
git reflog
複製代碼

文件刪除&安全重命名&忽略

#從工做區刪除文件,而且從倉庫中移除對某個文件的跟蹤
git rm <file-name>
#只移除對該文件的跟蹤,可是依舊在工做區保留文件
git rm --cached <file-name>

#安全重命名
git mv <old-name> <new-name>

#刪除未跟蹤而且未被.gitignore忽略的文件
git clean
#查看哪些文件將會被刪除,可是不會真正刪除
git clean -n
複製代碼

撤銷修改,代碼回滾

#撤銷工做區某個文件修改
git checkout <file-name>
#撤銷全部文件
git checkout .
#恢復某個commit的指定文件到暫存區和工做區
git checkout <commit-id> <file-name>

#撤銷當前暫存區的修改
git reset <file-name>
#版本回退
#只移動倉庫中`HEAD`指針的位置,工做區和暫存區的修改都不變
git reset --soft <commit-id>
#移動`HEAD`指針的位置,並使用回退的到版本重置暫存區,工做區的修改保持不變
git reset --mixed <commit-id>
#移動`HEAD`指針位置,並使用回退的到版本重置工做區和暫存區,保持與指定的提交一致
git reset --hard <commit-id>

#重置修改
#新建一個提交重置目標提交
git revert <commit-id>
#重置目標提交,可是不會新建提交,而是修改工做區和暫存區
git revert -n <commit-id>
#重置多個提交(不包括start-id,可是包括end-id)
git revet <start-id>...<end-id>

#在revert遇到衝突並解決衝突後,繼續執行撤銷操做
git revert --continue
#終止revert,但保留當前的結果
git revert --quit
#撤銷revert
git revert --abort
複製代碼

分支

#列出本地全部分支
git branch
#列出全部遠程分支(後文會講解什麼是遠程分支)
git branch -r
#列出全部本地和遠程分支
git branch -a
#查看分支的詳細信息
git branch -v

#新建分支
git branch <branch-name>
#新建分支並切換分支
git checkout -b <branch-name>
#切換分支
git checkout <branch-name>
#切換到上一個分支
git checkout -
#刪除分支(針對已經合併過的分支)
git branch -d <branch-name>
#刪除分支(無論是否合併)
git branch -D <branch-name>

#合併分支
git merge <branch-name>
#不使用fast-forward模式合併
git merge --no-ff <branch-name>

#挑選一個commit合併到當前分支
git cherry-pick <commit-id>
#挑選指定分支的最新提交
git cherry-pick <branch-name>
#挑選連續多個提交(左開右閉,不包括start-commit)
git cherry-pick <start-comm-id>...<end-commit-id>
挑選連續多個提交(左閉右閉,包括start-commit)
git cherry-pick <start-commid-id>^...<end-commit-id>

#在解決衝突後,繼續執行下一個cherry-pick
git cherry-pick --continue
#退出操做,保留當前進度
git cherry-pick --quit
#撤銷本次操做
git cherry-pick --abort
複製代碼

打上Tag

#查看全部tag
git tag
#篩選相應的tag
git tag -l <tag-name>
#查看某個commit上全部的tag
git tag --points-at <commit-id>
#查看某一個tag
git show <tag-name>
#查看全部tag以及它們分別對應的commit
git show-ref --tags

#新建tag
git tag <tag-name>
#在指定的提交新建tag
git tag <tag-name> <commit-id>
#添加一個tag和message
git tag -a <tag-name> -m <message>
#刪除tag
git tag -d <tag-name>
複製代碼

緊急加塞,使用stash

#新建stash
git stash
#指定你想要的messge信息
git stash save <message>
#將未跟蹤的文件也加入暫存
git stash -u
#將全部文件加入暫存(即便該文件被git忽略)
git stash -a

#查看暫存的歷史
git stash list
#查看某一個次特定的暫存
git show stash@{<number>}

#取出最近的暫存
git stash apply
#取出目標暫存
git stash apply <number>
#取出最近暫存,並刪除該暫存的記錄
git stash pop

#刪除最近暫存
git stash drop
#刪除目標暫存
git stash drop <number>
#清空歷史
git stash clear
複製代碼

變基

#合併分支
git rebase <branch-name>
#能夠交互式的操做到commi-id爲止的提交(不包括commit-id所指向提交)的全部提交
git rebase -i <commit-id
複製代碼

遠程倉庫

#拉取代碼,並使用默認的遠端倉庫的名字
git clone <url>
#拉取代碼,自定義本地倉庫名字
git clone <url> <new-name>

#添加遠程倉庫
git remote add <remote-name> <remote-url>
#查看遠端倉庫信息
git remote -v
#刪除遠程倉庫
git remote remove <remote-name>
#重命名遠程操做名字
git remote rename <old-remote-name> <new-remote-name>

#推送分支到特定的遠程倉庫,若是隻有一個遠程倉庫能夠省略,第一次推送須要加入`-u`參數
git push <remote-name> <branch-name>
#推送指定tag到遠端
git push <remote-name> <tag-name>
#推送全部tag到遠端
git push <remote-name> --tags

#拉取更新
git fetch
#獲取遠端倉庫更新,並自動合併到本地分支(至關於`git fetch && git merge`) 
git pull
#使用rebase方式拉取更新
git pull --rebase
複製代碼

更多文章

相關文章
相關標籤/搜索