命令中:<>表示可選填寫 []表示選項必須填寫 ()表示可以等價替換為()里內容
0.初始化倉庫命令
git init 初始化當前目錄倉庫
git init --bare 當前目錄創建一個裸存儲庫
1.暫存相關命令
git add [file] 提交某文件到暫存區([file]可以是文件名或目錄名)
git add -A <path> 提交所有變化到暫存區,省略<path>表示.(即當前目錄)
git add . 提交新文件和被修改文件(不包括被刪除文件)到暫存區
git add -u <path> 提交被修改和被刪除文件(不包括新文件)到暫存區,省略<path>表示.(即當前目錄)
git add -i <path> 查看中被所有修改過或已刪除文件但沒有提交的文件,並通過其revert子命令可以查看<path>中所有未跟蹤的文件
2.提交相關命令
git commit -m "message" 將在本地存儲庫的“add”中所暫存的更改提交,以及添加本次提交的描述message信息
git commit -a “message” 將在本地存儲庫已跟蹤文件中的執行修改或刪除操作的文件都提交,以及添加本次提交的描述message信息
git commit -am "message" 代表-a與-m命令作用都生效
git commit -v 顯示HEAD已提交和本次將要提交的內容之間的統一差異與發生了哪些更改來幫助用戶描述提交。
git commit --amend 進入vim,可以更改上次提交的描述信息進行保存
git commit --amend -m "updated last message" 更改上次提交的描述信息用updated last message替換並保存
3.撤銷與回退命令
(1)撤銷在工作區的修改的代碼
git checkout -- [file] 丟棄某個文件本次修改
git checkout -- . 丟棄本次全部修改
注意:git checkout -- [file] 這里有兩種情況:一種是<file>自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;一種是<file>已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。總之,就是讓這個文件回到最近一次git commit或git add時的狀態。git checkout – . 丟棄全部修改包括:新增的文件會被刪除、刪除的文件會恢復回來、修改的文件會回去。這幾個前提都說的是,回到暫存區之前的樣子。對之前保存在暫存區里的代碼不會有任何影響,對commit提交到本地分支的代碼就更沒影響了.
(2)代碼git add到緩存區,並未commit提交
git reset HEAD [file] 丟棄某個文件本次暫存
git reset HEAD . 丟棄本次全部暫存
(3)git commit到本地分支
git reset <選項> HEAD-1(HEAD^) 回到上次提交版本
選項:
-mixed (為默認參數,與不寫效果一樣)不刪除工作空間改動代碼,撤銷commit,並且撤銷git add . 操作
--soft 不刪除工作空間改動代碼,撤銷commit,不撤銷git add .
--hard 刪除工作空間改動代碼,撤銷commit,撤銷git add . (即恢復到了上一次的commit狀態)
(4)回退某一個版本
git reset <選項> <版本號> 回到上次某次提交的版本,版本號可以在git log查看
選項:
-mixed (為默認參數,與不寫效果一樣)不刪除工作空間改動代碼,撤銷commit,並且撤銷git add . 操作
--soft 不刪除工作空間改動代碼,撤銷commit,不撤銷git add .
--hard 刪除工作空間改動代碼,撤銷commit,撤銷git add . (即恢復到了上一次的commit狀態)
4.查看命令
git status 查看當前工作區和暫存區文件的狀態
git log 可以查看提交歷史,以便確定要回退到哪個版本
git log --graph 可以看到分支合並圖
git relog 查看命令歷史,以便確定要回到未來的哪個版本
git stash list 查看儲存的工作現場
git branch 不帶任何參數,列出本地已經存在的分支
git branch -a 查看所有分支列表,包括本地和遠程
git branch -r 查看遠程版本庫分支列表
git branch -v查看每一個分支的最后一次提交,可以運行
git branch -vv 可以查看本地分支對應的遠程分支
git branch --merged 查看哪些分支已經合並入當前分支
git branch --no-merged 查看尚未合並進來的分支
git diff <filename> 比較工作區與暫存區之間的差異,也就是修改之后還沒有暫存起來的變化內容
git diff <branch> <filename> 查看當前分支文件和另一分支的區別.
git diff --cached(--staged) <commit> <filename> 查看已經暫存區和指定commit提交之間的差異
git diff <commit> <filename> 查看工作目錄同Git倉庫指定 commit 的內容的差異
git diff <commit> <commit> Git倉庫任意兩次 commit 之間的差別
5.刪除命令
git rm [file]刪除文件,刪除后需要提交git commit -m " remove file"
6.分支操作命令
git branch [branchname] 創建名為branchname的分支,創建分支時需要是最新的環境,創建分支但依然停留在當前分支
git branch -m [oldName] [newName] 給某分支重命名
git branch -d [branchname] 刪除branchname分支,如果在分支中有一些未merge的提交,會刪除分支失敗
git branch -D [branchname] 即使有未merge的提交, 也會強制刪除branchname分支
git merge [branchname] 將某個指定分支合並到當前分支有沖突需先解決
git merge --squash [branchname] 將branchname上的所有提交已經合並到當前分支暫存區(再次執行commit命令提交)
git cherry-pick [branchcommit] 揀選另一條分支上的某個提交條目的改動提交到當前分支的暫存區(可以揀選多次,執行commit命令提交,branchcommit是某分支的commit id)
git cherry-pick -n [branchcommit1] [branchcommit2]... 揀選另一條分支上的多個提交條目的改動提交到當前分支的暫存區
git merge --no-ff -m "message" [branchname] 禁用Fast forward合並branchname分支,並添加描述信息
git checkout [branchname](git switch [branchname])切換到分支branchname
git checkout -m [branchname]切換分支檢出失敗時,會自動嘗試合並(可能會沖突)后再切換到分支branchname
git checkout -b [branchname](git switch -c [branchname])創建並切換到分支branchname
7.保存工作現場
git stash 可以把當前工作現場“儲藏”起來,等以后恢復現場后繼續工作
git stash apply <stashname>恢復到 工作現場stashname(不輸 <stashname>是恢復到最新儲存的工作現場)
git stash drop刪除工作現場 stashname
git stash pop恢復的同時也刪除工作現場
git stash branch [branchname]從儲藏中創建分支