常用指令
-
git init
:初始化一個倉庫 -
git clone <url>
: 克隆一個倉庫
//會在當(dāng)前目錄下創(chuàng)建一個libgit2的目錄毫捣,并在這個目錄下初始化一個.git文件夾
//從遠(yuǎn)程倉庫拉取下的所有數(shù)據(jù)都放入.git文件夾域携,然后從中讀取最新版本的文件的拷貝
git clone https://github.com/libgit2/libgit2
-
git clone <url> <name>
:在本地重新定義倉庫的名稱
git clone https://github.com/libgit2/libgit2 mylibgit
-
git status
: 查看你的文件狀態(tài)
上圖中可以看出readme 文件還未被git 跟蹤饿悬,是Untracked 狀態(tài),提示使用git add readme 使其暫存(以后被commited)
git add README //暫存
git status
上圖是已暫存的狀態(tài)
-
git status -s / git status --short:狀態(tài)簡覽
- ?? 未被跟蹤的文件
- M :已修改的文件
- A : 已暫存的文件
- AM: 已暫存但是又被修改的文件
git diff
: 查看尚未暫存的文件更新了哪些部分,比較的是工作區(qū)和暫存區(qū)的差異妒峦,也就是修改后還未暫存的內(nèi)容-
git diff --staged
/git diff --cached
:比較的是已暫存的和最后一次提交的差異,也就是已暫存的將要添加到下次提交里的內(nèi)容
例如:有一個third 文件,已經(jīng)暫存的內(nèi)容是:“第三個文件”师倔,修改的內(nèi)容是“第一次修改”,該文件的狀態(tài)是 AM悔叽,就是已經(jīng)暫存莱衩,但是又做了修改
git diff
:說明工作區(qū)和暫存區(qū)的差別是 添加了"第一次修改"
git diff --staged/ git diff --cached
:說明暫存區(qū)和上一次提交的差別是“第三個文件”
-
git commit -a
:跳過add 過程,自動把所有跟蹤過的文件提交娇澎,未跟蹤過的不行
-
git rm
:移除文件笨蚁,必須從已跟蹤過的文件清單中移除(就是被git 所知曉的文件)
git rm --cached
"文件名或者目錄":刪除git 倉庫中的文件,但是保留工作區(qū)趟庄,意思是磁盤上保存括细,但是git 不跟蹤,適用于沒有來得及用gitignore 就提交的大量無用文件
git add 文件名
暫存
git commit -m '提交記錄'
提交
git commit -am
暫存+提交
git branch 分支名
創(chuàng)建分支
git checkout 分支名
切換分支
git checkout -b 分支名
:創(chuàng)建并切換分支
git merge 分支名
合并分支
git remote add origin 地址
添加遠(yuǎn)程庫地址
git push origin 分支
推送到遠(yuǎn)程倉庫
git fetch
:從服務(wù)器抓取本地沒有的數(shù)據(jù)戚啥,但是不會修改工作目錄中的內(nèi)容勒极,它只會獲取數(shù)據(jù)然后讓你自己合并
git pull
:拉取,并合并虑鼎,修改工作目錄內(nèi)容
git 支持的協(xié)議
git 支持多種數(shù)據(jù)傳輸協(xié)議
https:// 協(xié)議辱匿,git://協(xié)議, ssh 協(xié)議 user@server:path/to/repo.git
提交歷史查看
- git log
- git log -p / git log --patch:它會顯示每次提交所引入的差異
- git log -2/ 數(shù)字指定打印幾條log
- git log --stat :每次提交的簡略統(tǒng)計(jì)信息
- git log --pretty:個選項(xiàng)可以使用不同于默認(rèn)格式的方式展示提交歷史
- git log --pretty=oneline:會將每個提交放在一行顯示,在瀏覽大量的提交時非常有用
pretty 子項(xiàng)
//以下三行格式基本一致炫彩,詳盡程度不一
git log --pretty=short
git log --pretty=full
git log --pretty=fuller
// git log --pretty=format:""
撤銷操作
- git commit --amend: 會提交暫存中的信息匾七,如果上次提交之后沒有做任何改動,那么會修改提交信息
遠(yuǎn)程倉庫
- git remote://查看遠(yuǎn)程倉庫江兢,一般是簡寫(默認(rèn)origin)
- git remote -v://會列出所有的遠(yuǎn)程倉庫昨忆, 簡寫和地址
- git remote add <shortname> <url>:shortname 就是遠(yuǎn)程倉庫的簡寫,可以指定杉允,之后可以使用簡寫代替遠(yuǎn)程倉庫 例如拉纫靥:git fetch <shortname>
- git fetch <remote>:拉取遠(yuǎn)程倉庫席里,remote 為遠(yuǎn)程的簡寫,默認(rèn)origin
- git push <remote> <branch>:推送到遠(yuǎn)程倉庫
- git push origin master:將master 分支推送到origin 服務(wù)器
- git remote show <remote>:查看遠(yuǎn)程倉庫
- git remote rename:改寫遠(yuǎn)程倉庫的簡寫名稱(例如 git remote rename pb pual)
- git remote remove/git remote rm :移除遠(yuǎn)程倉庫
-
git checkout -b <branch> <remote>/<branch>
:創(chuàng)建一個本地分支branch 跟蹤遠(yuǎn)程分支 <remote>/<branch> -
git checkout --track origin/main(遠(yuǎn)程分支名)
:創(chuàng)建并檢出一個本地分支 main拢驾,跟蹤遠(yuǎn)程引用 origin/main(以上的快捷方式) -
git push origin --delete <branch>
刪除遠(yuǎn)程分支
打標(biāo)簽
git 可以給倉庫歷史中的某一個提交打上標(biāo)簽奖磁,代表性的是人們用這個功能來標(biāo)記發(fā)布節(jié)點(diǎn)
- git tag :列出所有標(biāo)簽
- git tag -l /git tag -list: 同上,可以省略
- git tag -l "v1.8.5*" :列出1.8.5系列版本
標(biāo)簽分為輕量標(biāo)簽
和附注標(biāo)簽
繁疤,輕量標(biāo)簽
只是一個臨時的信息咖为,它只是某個特定提交的引用。附注標(biāo)簽
是存儲在git 數(shù)據(jù)庫中的一個完整的對象
附注標(biāo)簽
- git tag -a v1.4 -m "my version 1.4"
輕量標(biāo)簽
- git tag -v1.4 -lw
補(bǔ)打標(biāo)簽
通過git log --pretty=oneline 查看所有的提交稠腊,在某一次提交補(bǔ)打標(biāo)簽 要找到對應(yīng)的校驗(yàn)和躁染,通過 git tag -a <校驗(yàn)和或者部分校驗(yàn)和> -m "內(nèi)容"
共享標(biāo)簽
默認(rèn)情況下,git push 并不會將標(biāo)簽傳送到遠(yuǎn)程倉庫上架忌,創(chuàng)建完成后必須顯示的推送標(biāo)簽
- git push <remote> <tag>: git push origin v1.0 :推送一次標(biāo)簽
- git push <remote> --tags: git push origin --tags:一次推送很多標(biāo)簽
刪除標(biāo)簽
- git tag -d <tagname>:git tag -d v1.0 刪除本地1.0的標(biāo)簽
- git tag -d <tagname> -lw :刪除輕量標(biāo)簽
上述操作并不會刪除遠(yuǎn)程吞彤,需要 - git push <remote>:refs/tags/<tagname>
或者: - git push <remote> --delete <tagname>
檢出標(biāo)簽,如果你需要進(jìn)行更改,比如你要修復(fù)舊版本中的錯誤叹放,那么通常需要創(chuàng)建一個新分支:
- git checkout -b version2 v2.0.0 ://Switched to a new branch 'version2'
分支
git branch
:查看分支
git branch -v
:查看每一個分支的最后一次提交
git branch -vv
:列出所有的本地分支备畦,并且包含更多的信息(例如跟蹤的遠(yuǎn)程分支)
git branch --merged
:查看與當(dāng)前分支合并過的分支
git branch --no-merged
查看與當(dāng)前分支未合并過的分支
git branch -d
刪除無用分支