Git常用指令
Git指令 | 含義 |
---|---|
init | 将本地工程初始化為本地倉庫,納入版本控制 |
clone | 從遠端克隆倉庫 |
add | 将工作區修改儲存到暫存區 |
status | 檢視暫存區(green)和工作區(red)的修改 |
commit | 将修改送出到本地倉庫 |
push | 将本地目前分支的送出推送到遠端倉庫 |
log | 檢視送出的日志 |
reset | 将送出回退到某一次送出時的狀态 |
branch | 分支的新增、浏覽、删除等,不能切換分支 |
checkout | 檢視目前分支狀态,切換分支 |
merge | 合并分支 |
diff | 檢視工作區的修改 |
普通指令 | 含義 |
---|---|
| 删除檔案或檔案夾 |
| 根目錄執行,删除倉庫 |
| 退出 git bash |
| 清空 git bash 界面 |
init
将本地工程初始化為本地倉庫,納入版本控制
git init
clone
從遠端克隆倉庫
git clone URL
例:
git clone [email protected]:leiyu1997/Blogs.git
URL有兩種形式:
- http格式,如
https://github.com/leiyu1997/Blogs.git
- 在推送的時候,這種形式clone下來的倉庫需要每次校驗使用者名和密碼,不實用
- ssh格式,如
[email protected]hub.com:leiyu1997/Blogs.git
- 在推送的時候,如果配置了ssh keys,就不需要驗證使用者名和密碼了,比較友善
add
将工作區修改儲存到暫存區
-
git add [file]
- add指定檔案,在
中可以用TAB鍵選擇檔案git bash
- add指定檔案,在
-
git add .
- add目前目錄及其子目錄的所有檔案
-
git add --all
- add所有檔案(不管在哪個目錄下執行,都會add整個倉庫的所有修改)
在根目錄下,
git add .
和
git add --all
沒有差別,隻有不是根目錄的情況下有差別
status
檢視暫存區(green)和工作區(red)的修改
git status
- 綠色代表已經添加(add)到暫存區(index)
- 而紅色表示還在工作空間(workspace)中
- 已經送出(commit)已經到repo裡的,檢視不到狀态
commit
将修改送出到本地倉庫
-
将暫存區的修改送出到本地倉庫,memo為送出的備注git commit -m [memo]
-
将暫存區的修改以及工作區已加入版本控制的檔案修改送出到本地倉庫,memo為送出的備注git commit -am [memo]
push
将本地目前分支的送出推送到遠端倉庫
git push
log
檢視送出的日志,按Q退出,可選擇檢視的分支
git log [branch]
指令 | 含義 |
---|---|
| 什麼都不加預設檢視本地目前分支的日志 |
| 加上分支名檢視要檢視的分支的日志 |
| 檢視遠端目前分支的日志 |
| 檢視其他遠端分支的日志 |
| 加上 展示縮略日志 |
reset
重新設定head指針指向的commit記錄,即可以将送出回退到某一次送出時的狀态
git reset [--soft]|[--mixed]|[--hard] <commitID>
reset有三個參數:
指令 | 影響暫存區 | 影響工作區 | 含義 |
---|---|---|---|
| N | N | 回到指定commit的狀态,暫存區和工作區的修改都不會受到影響 |
| Y | N | 回到指定commit的狀态,暫存區的修改會回到工作區。 –mixed是預設參數,即不加參數就預設為–mixed |
| Y | Y | 回到指定commit的狀态,暫存區和工作區的修改都會被删除 |
從之前的Git基本概念的了解中我們知道,head其實就是一個指向最新commit的指針,我們從git log的日志中也可以看到,最新的commit右邊有(head->master)表示head目前是master分支,并且指向這個commit。
由此,我們也可以在使用commitID的地方用HEAD代替:
-
git reset head
- 回退到最新的commitid,暫存區的修改會回到工作區
- 既然是回到最新的commit,那麼
便沒什麼意義了,因為他什麼也沒改git reset --soft head
-
回退到最新送出的上一次送出git reset head^
-
回退到最新送出的上一次的上一次送出,往後以此類推git reset head^^
-
回退到最新送出git reset head~0
-
回退到最新送出的上一次送出,往下依次類推git reset head~1
branch
分支的新增、浏覽、删除等,不能切換分支
-
浏覽本地分支(被git branch
标記的分支為目前本地主分支)'*'
-
建立新的本地分支,本地主分支不變git branch <branch>
-
基于某一分支的一個commitID建立新分支git branch <branch> <commitID>
-
浏覽本地(green/white)和遠端分支(red)git branch -a
-
删除本地分支git branch -d <branch>
checkout
檢視目前分支狀态,切換分支
注:工作區和暫存區的修改會随着分支的切換在不同分支間移動,而已送出的修改則不會随着分支移動
-
檢視目前分支狀态git checkout
-
切換到branch分支git checkout <branch>
-
建立branch分支并切換到該分支(如果branch分支已經被建立,那麼該語句将報錯)git checkout -b <branch>
-
強制建立branch分支并切換到該分支(如果branch分支已經建立,該指令會将原來的分支強制覆寫)git checkout -B <branch>
merge
合并分支
要将B分支的代碼合并到A分支上,要先将head指向A分支,然後執行合并B的操作,這樣,B中的修改就合并到A上了
git checkout A
git merge B
diff
檢視工作區的修改
git diff