命令說明
<>
內的內容爲必填項
[]
內的內容爲選填項
file
代指具體的文件路徑
message
代指具體的說明內容
remoteRepo
代指具體的遠程倉庫地址
remoteName
代指具體的遠程倉庫名稱
localBranchName
代指具體的本地倉庫分支名
remoteBranchName
代指具體的遠程倉庫分支名
stashName
代指具體的工作現場名
commitId
代指具體的版本號
tagName
代指具體的標籤名
...
指可以指定多個(如file
)
HEAD
表示當前版本,上一個版本就是HEAD^
,上上一個版本就是HEAD^^
基本用法
序號 |
命令內容 |
命令含義 |
備註 |
1 |
git init |
創建版本庫 |
執行該命令的目錄將變成Git 可以管理的本地倉庫,目錄下多的一個.git 的目錄就是Git 來跟蹤並管理版本庫的 |
2 |
git add <file>... |
將工作區中的修改文件添加到本地倉庫的暫存區中 |
修改文件不僅僅指被修改的文件,也可以指添加的新文件、被刪除的文件等 |
3 |
git commit -m <message> |
將暫存區的修改全部提交到本地倉庫的當前分支上 |
message 爲本次提交添加說明 |
4 |
git status |
查看當前分支的狀態 |
|
5 |
git diff [file]... |
查看工作區和倉庫暫存區文件內容的修改 |
file 不指定時,將查看所有修改文件 |
6 |
git diff HEAD [file]... |
查看工作區和倉庫當前分支文件內容的修改 |
file 不指定時,將查看所有修改文件 |
7 |
git log |
顯示最近的提交日誌 |
添加參數--pretty=oneline 可以簡化顯示內容;添加參數--graph --pretty=oneline --abbrev-commit 可以查看分支的合併情況 |
8 |
git reset --hard <commitId> |
回退到指定版本(也可以是未來的某個版本) |
版本號(commitId )可以用HEAD 表示,也可以用具體的值表示(值沒必要寫全,一般寫前7 位即可) |
9 |
git reflog |
查看命令歷史 |
常用於確定版本號 |
10 |
git checkout -- <file> |
撤銷工作區的修改 |
回退到最後一次git add 或git commit 後的狀態 |
11 |
git reset HEAD <file> |
撤銷暫存區的修改 |
將暫存區的修改撤銷掉,重新放回工作區 |
12 |
git rm <file> |
刪除文件 |
用於將刪除的文件添加到暫存區,使用git add <file> 也可以達到同樣的效果 |
13 |
git rebase |
把本地未推送的分叉提交歷史整理成直線 |
|
與遠程倉庫的此操作
序號 |
命令內容 |
命令含義 |
備註 |
1 |
git remote add origin <remoteRepo> |
將一個已有的本地倉庫與遠程倉庫關聯 |
此時本地倉庫的分支並未與遠程倉庫的分支關聯 |
2 |
git remote [-v] |
查看遠程倉庫信息 |
添加-v 參數可以顯示詳細信息 |
3 |
git remote rename <old> <new> |
修改遠程倉庫的名稱 |
遠程倉庫的默認名稱爲origin |
4 |
git push [-u] [remoteName] [localBranchName] |
將本地倉庫的指定分支推送到指定遠程倉庫的關聯分支上 |
執行推送操作的前提是,本地倉庫的指定分支與遠程倉庫的某個分支已關聯,如果沒有關聯,可以通過在 push 後添加 -u 參數進行首次關聯和推送 |
5 |
git branch --set-upstream-to=<remoteName>/<remoteBranchName> <localBranchName> |
將本地倉庫的指定分支與遠程庫的指定分支進行關聯 |
提示信息:no tracking information |
6 |
git clone <remoteRepo> |
將遠程倉庫的默認分支克隆到本地 |
本地將創建相同名稱的倉庫和分支;默認分支一般是master 分支 |
7 |
git clone -b <remoteBranchName> <remoteRepo> |
直接將遠程倉庫的的指定分支克隆到本地 |
本地將只有一個與指定分支同名的分支 |
8 |
git checkout -b <localBranchName> <remoteName>/<remoteBranchName> |
創建遠程庫的指定分支到本地 |
也可以說,本地創建一個分支,並將該分支與遠程庫的指定分支進行關聯 |
9 |
git pull |
抓取遠程庫的關聯分支的最新提交併合併到本地的當前分支 |
|
分支管理
序號 |
命令內容 |
命令含義 |
備註 |
1 |
git branch <localBranchName> |
創建分支 |
|
2 |
git checkout <localBranchName> |
切換分支 |
|
3 |
git checkout -b <localBranchName> |
創建並切換分支 |
|
4 |
git branch [-v] |
顯示本地所有分支 |
當前分支會標一個* 號;添加-v 參數表示顯示分支的最新提交信息 |
5 |
git branch -a |
顯示本地和遠程庫的所有分支 |
|
6 |
git branch -vv |
顯示本地所有分支及對應遠程庫的關聯分支 |
|
7 |
git merge <localBranchName> |
將指定分支合併到當前分支 |
|
8 |
git branch -d <localBranchName> |
刪除分支 |
|
9 |
git branch -D <localBranchName> |
強制刪除分支 |
|
10 |
git stash |
將當前工作現場“儲藏”起來 |
|
11 |
git stash list |
顯示存儲的工作現場(stash 內容) |
|
12 |
git stash apply [stashName] |
恢復指定工作現場 |
恢復後,stash 內容並不刪除 |
13 |
git stash drop |
刪除stash 內容 |
|
14 |
git stash pop [stashName] |
恢復現場的同時將刪除 stash 內容 |
|
15 |
git cherry-pick <commitId> |
複製一個特定的提交到當前分支 |
使用場景:在master 分支上修復的bug ,想要合併到當前dev 分支 |
標籤管理
標籤的作用主要就是方便提交的歷史版本的提取;創建一個標籤指向某一個版本號,後續需要取該版本,就可以直接通過標籤去取;標籤和分支一樣都是指向某個版本號的指針,但分支可以移動,標籤不能移動。
序號 |
命令內容 |
命令含義 |
備註 |
1 |
git tag <tagName> [commitId] |
創建標籤 |
版本號不指定時,標籤將打在當前分支最新提交的版本號上的;創建的標籤都只存儲在本地,不會自動推送到遠程 |
2 |
git tag -a <tagName> -m <"message"> <commit-id> |
創建帶有說明的標籤 |
-a 指定標籤名,-m 指定說明內容 |
3 |
git tag |
查看所有標籤 |
標籤不是按時間順序列出,而是按字母排序的 |
4 |
git show <tagName> |
查看標籤信息 |
標籤總是和某個版本號掛鉤。如果這個版本號同時出現在多個分支上,那麼在這幾個分支上都可以看到這個標籤 |
5 |
git tag -d <tagName> |
刪除標籤 |
|
6 |
git push <remoteName> <tagName> |
推送某個標籤到遠程 |
|
7 |
git push <remoteName> --tags |
一次性推送所有尚未推送到遠程的本地標籤 |
|
8 |
git push origin :refs/tags/<tagName> |
刪除遠程標籤 |
前提:本地對應標籤已刪除 |
參考:廖雪峯的 Git 教程