學(xué)習(xí)git命令行之前先來了解git的區(qū)域劃分已經(jīng)git文件的狀態(tài)劃分
git區(qū)域分為工作區(qū)缭裆、暫存區(qū)热芹,本地倉庫,遠(yuǎn)程倉庫
image.png
- Workspace:工作區(qū)
- Index / Stage:暫存區(qū)
- Repository:本地倉庫
- Remote:遠(yuǎn)程倉庫
一個文件的git狀態(tài)(通過git status可以查看)可以分為:
- Untracked files:未跟蹤狀態(tài),即新建的文件還未進(jìn)行add操作沟涨,在工作區(qū)
- Changes not staged for commit:已有的文件,修改了但未暫存异吻,即未進(jìn)行add操作裹赴,在工作區(qū)
- Changes to be committed:等待提交的文件,也可以說是staged狀態(tài)诀浪,已add但未commit棋返,等待提交的文件,在暫存區(qū)
受版本控制并且已修改的 modified 狀態(tài)
從暫存區(qū)已經(jīng)提交到本地倉庫的 committed 狀態(tài)
文件操作
在工作區(qū)(workspace)的文件可進(jìn)行的操作
- git add [file1] [file2] [dir]... :將指定文件或指定目錄(目錄下所有修改)從工作區(qū)添加到暫存區(qū)(可以是 新建雷猪、編輯和刪除的文件)
- git add . :將工作區(qū)中所有文件變更添加到暫存區(qū)
- git rm [file1] [file2] ...:刪除文件并將刪除放入暫存區(qū)
- git commit -a:提交工作區(qū)自上次commit之后的變化睛竣,直接到本地倉庫
- git checkout [file]:將文件從工作區(qū)撤回,即撤銷更改
在暫存區(qū)(Index/Staged)的文件可進(jìn)行的操作
- git restore --staged [file1] [dir] ... :撤銷文件或者目錄下的文件的add操作求摇,恢復(fù)到工作區(qū)(Git 2.23 版本之后新加)
- git commit -m [message]:將暫存區(qū)所有文件提交到本地倉庫
- git commit [file1] [file2] ... -m [message]:將指定文件從暫存區(qū)提交到本地倉庫
在本地倉庫(Repository)的文件可進(jìn)行的操作
- git push <遠(yuǎn)程主機名> <本地分支名>:<遠(yuǎn)程分支名>
如果本地分支名與遠(yuǎn)程分支名相同射沟,則可以省略為:git push <遠(yuǎn)程主機名> <本地分支名>
如果當(dāng)前分支只有一個遠(yuǎn)程分支,那么主機名都可以省略与境,形如 git push <本地分支名> - git reset HEAD file_name:拉取最近一次提交到本地倉庫的文件到暫存區(qū)验夯,并且該操作不影響工作區(qū)
git reset 通過把分支記錄回退幾個提交記錄來實現(xiàn)撤銷改動
在遠(yuǎn)程倉庫(Repository)的文件可進(jìn)行的操作
- git pull [remote] [branch]: 取回遠(yuǎn)程倉庫的變化,并與本地分支合并
- git fetch [remote]: 下載遠(yuǎn)程倉庫的所有變動
配置
- git config --list 列出所有 Git 當(dāng)時能找到的配置
- git config --list --show-origin:查看所有的配置以及它們所在的文件
- git config --global user.name "[name]" 設(shè)置姓名
- git config --global user.email "[email]" 設(shè)置郵箱
如果使用了 --global 選項摔刁,那么該命令只需要運行一次挥转,因為之后無論你在該系統(tǒng)上做任何事情, Git 都會使用那些信息共屈。 當(dāng)你想針對特定項目使用不同的用戶名稱與郵件地址時扁位,可以在那個項目目錄下運行沒有 --global 選項的命令來配置
獲取幫助
- git help <verb> :獲取幫助,全面手冊
- git <verb> -h:獲取幫助趁俊,可選項的快速參考
如 git help config/git config -h:獲取git config命令的手冊域仇;git add -h 。寺擂。暇务。泼掠。
新建代碼庫
- git init: 當(dāng)前目錄新建一個git代碼塊
- git init [project-name]:新建一個目錄并初始化為git庫
- git clone [url]: 下載一個項目和整個代碼歷史
分支操作
- git brance:查看本地所有分支
- git branch -r:查看所有遠(yuǎn)程分支
- git branch -a:查看所有本地和遠(yuǎn)程分支
- git branch -d [branch-name]:刪除本地分支
- git push origin --delete [branch-name]:刪除遠(yuǎn)程分支(除了 git push,其他常用命令不會對遠(yuǎn)程倉庫造成影響)
- git branch [branch-name]:新建一個分支垦细,但仍然留在當(dāng)前分支
- git branch --track [branch] [remote-branch]:新建一個分支择镇,與指定的遠(yuǎn)程分支建立追蹤關(guān)系
- git checkout -b [branch-name]:新建一個分支并切換到該分支
- git checkout [branch-name]:切換到指定分支,并更新工作區(qū)
- git checkout -:切換到上一個分支
- git merge [branch]:合并指定分支到當(dāng)前分支
堆棧區(qū)操作(隱藏操作)
- git stash:將當(dāng)前的工作區(qū)內(nèi)容保存到git棧隱藏起來
git stash save [message]:添加備注括改,方便查找 - git stash list: 查看stash存儲列表
- git stash show stash@{num}:顯示第{num+1}個存儲做了哪些更改
若直接輸入git stash show腻豌,顯示的是第一個,num從0開始 - git stash apply stash@{num}:將堆棧中第num+1個對應(yīng)的stash彈出嘱能,但不會刪除該存儲
省略stash@{num}默認(rèn)操作的就是第一個 - git stash pop stash@{num}:將緩存堆棧中的對應(yīng)stash應(yīng)用到當(dāng)前的工作目錄下并從stash列表里刪除該stash
省略stash@{num}默認(rèn)操作的就是第一個 - git stash drop stash@{num}:丟棄stash@{$num}存儲吝梅,從列表中刪除這個存儲
省略stash@{num}默認(rèn)操作的就是第一個 - git stash clear:刪除所有的stash
查看操作
- git status: 顯示有變更的文件狀態(tài)
- git log:顯示當(dāng)前分支的commit歷史
- git log --stat:顯示commit歷史,以及每次commit發(fā)生變更的文件
- git log -S [keyword]:根據(jù)關(guān)鍵字搜索commit歷史
- git diff: 顯示工作區(qū)和暫存區(qū)的差異