? ?我們?cè)诠ぷ髦薪?jīng)常會(huì)使用到Git,可是有時(shí)候命令太多記不住满败,為此我整理了一份文檔,方便大家記憶和參考叹括!
下面幾個(gè)是專用名詞算墨,作為參考。
Workspace: 工作區(qū)
Index/Stage:暫存區(qū)
Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù))
Remote:遠(yuǎn)程倉(cāng)庫(kù)
一汁雷、配置操作
?#指令集
?$?git? help -a
# 顯示當(dāng)前git配置
?$??git config --list? 【簡(jiǎn)寫 :git config -l】
# 更改配置文件
$ git config -e ? ?##單個(gè)文件配置
$?git config -e --global ? ? ?##全局配置
# 配置郵箱&&用戶名
$?git config user.email "郵箱"
$ git config user.name "用戶名"?
$?git config --global user.email "郵箱" ? ? ? ? ?##全局##
$?git config --global user.name? "用戶名" ? ? ##全局##
# 命令配置別名
$?git config alias.別名 原指令名稱 ?如:git config? alias.st status ? ??##單個(gè)項(xiàng)目配置##
$?git config --global alias.別名 原指令名?如:git config --global alias.st status ?##全局配置##
二净嘀、倉(cāng)庫(kù)操作
# 初始化倉(cāng)庫(kù)
$?git init ? ? ##空倉(cāng)庫(kù)
$?git init 倉(cāng)庫(kù)路徑 ?##?已存在
# 復(fù)制遠(yuǎn)程倉(cāng)庫(kù)
$?git clone? 倉(cāng)庫(kù)路徑 ??
# 添加文件到暫存區(qū) ?
$?git add .?????##?所有文件
$?git add file1? file2 ...????##?指定文件
# 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
$?git rm file1 file2 ... ?
# 停止追蹤指定文件侠讯,但該文件會(huì)保留在工作區(qū)
$?git rm --cached file ?
# 提交
$?git commit -m "修改內(nèi)容"????##?提交暫存區(qū)到倉(cāng)庫(kù)區(qū)
$?git commit file1 file2 ... -m " message"????##?提交暫存區(qū)的指定文件到倉(cāng)庫(kù)區(qū)
$?git commit -a????##?提交工作區(qū)自上次commit之后的變化挖藏,直接到倉(cāng)庫(kù)區(qū)
$?git commit -v????##?提交時(shí)顯示所有diff信息
$?git commit --amend file1 file2 ...????##?重做上一次commit,并包括指定文件的新變化
# 推送
$?git push origin master????##?提交更改到遠(yuǎn)程倉(cāng)庫(kù)
# 拉取
$?git pull origin master ? ?##?拉取遠(yuǎn)程更改到本地倉(cāng)庫(kù)默認(rèn)自動(dòng)合并
# 初始化倉(cāng)庫(kù)
$?git init ? ? ##空倉(cāng)庫(kù)
$?git init 倉(cāng)庫(kù)路徑 ?##?已存在
# 復(fù)制遠(yuǎn)程倉(cāng)庫(kù)
$?git clone? 倉(cāng)庫(kù)路徑 ??
# 添加文件到暫存區(qū) ?
$?git add .?????##?所有文件
$?git add file1? file2 ...????##?指定文件
# 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
$?git rm file1 file2 ... ?
# 停止追蹤指定文件侠讯,但該文件會(huì)保留在工作區(qū)
$?git rm --cached file ?
# 提交
$?git commit -m "修改內(nèi)容"????##?提交暫存區(qū)到倉(cāng)庫(kù)區(qū)
$?git commit file1 file2 ... -m " message"????##?提交暫存區(qū)的指定文件到倉(cāng)庫(kù)區(qū)
$?git commit -a????##?提交工作區(qū)自上次commit之后的變化挖藏,直接到倉(cāng)庫(kù)區(qū)
$?git commit -v????##?提交時(shí)顯示所有diff信息
$?git commit --amend file1 file2 ...????##?重做上一次commit,并包括指定文件的新變化
# 推送
$?git push origin master????##?提交更改到遠(yuǎn)程倉(cāng)庫(kù)
# 拉取
$?git pull origin master ? ?##?拉取遠(yuǎn)程更改到本地倉(cāng)庫(kù)默認(rèn)自動(dòng)合并
三厢漩、分支操作
#?列出分支【查】
$?git branch -a ? ?##?列出本地和遠(yuǎn)程分支
$?git branch????##?列出所有本地分支
$?git branch -r????##?列出所有遠(yuǎn)程分支
#?新建 【增】
$?git branch [branch-name] ? ?##?新建一個(gè)分支膜眠,但依然停留在當(dāng)前分支
$?git checkout -b [branch]?????##?新建一個(gè)分支,并切換到該分支
$?git branch [branch] [commit]?????##?新建一個(gè)分支,指向指定commit
$?git branch --track [branch] [remote-branch]?????##?新建一個(gè)分支柴底,與指定的遠(yuǎn)程分支建立追蹤關(guān)系
#?切換 【改】
$?git checkout [branch-name] ? ?##?切換到指定分支婿脸,并更新工作區(qū)
$?git checkout - ? ?##?切換到上一個(gè)分支
$?git branch -m brancholdname branchnewname????##?重命名分支
#?合并【合】
$?git branch --set-upstream [branch] [remote-branch] ? ?##?建立追蹤關(guān)系,在現(xiàn)有分支與指定的遠(yuǎn)程分支之間
$?git merge [branch] ? ?##?合并指定分支到當(dāng)前分支柄驻,如果有沖突需要手動(dòng)合并沖突(就是手動(dòng)編輯文件保存咯)狐树,然后add,commit再提交
$?git cherry-pick [commit] ????##選擇一個(gè)commit,合并進(jìn)當(dāng)前分支
#?刪除【刪】
$?git branch -d [branch-name] ? ?##?刪除分支
$?git push origin --delete [branch-name] ? ?##?刪除遠(yuǎn)程分支
$?git branch -dr [remote/branch]
四鸿脓、標(biāo)簽操作
#?列出所有tag
$?git tag
#?新建一個(gè)tag在當(dāng)前commit
$?git tag [tag]
#?刪除本地tag
$?git tag -d [tag]
#?刪除遠(yuǎn)程tag
$?git push origin :refs/tags/[tagName]
#?查看tag信息
$?git show [tag]
#?提交指定tag
$?git push [remote] --tags
#?提交所有tag
$?git push --tags
#?新建一個(gè)分支抑钟,指向某個(gè)tag
$?git checkout -b [branch] [tag]
五、撤銷操作
#?恢復(fù)暫存區(qū)的指定文件到工作區(qū)
$?git checkout [file]
#?恢復(fù)某個(gè)commit的指定文件到暫存區(qū)和工作區(qū)
$?git checkout [commit] [file]
#?恢復(fù)暫存區(qū)的所有文件到工作區(qū)
$?git checkout .
#?回退到上一個(gè)版本野哭,在Git中在塔,用HEAD表示當(dāng)前版本
$?git reset --hard HEAD^
#?重置暫存區(qū)的指定文件,與上一次commit保持一致拨黔,但工作區(qū)不變
$?git reset [file]
#?重置暫存區(qū)與工作區(qū)蛔溃,與上一次commit保持一致
$?git reset --hard
#?重置當(dāng)前分支的指針為指定commit,同時(shí)重置暫存區(qū)篱蝇,但工作區(qū)不變
$?git reset [commit]
#?重置當(dāng)前分支的HEAD為指定commit贺待,同時(shí)重置暫存區(qū)和工作區(qū),與指定commit一致
$?git reset --hard [commit]
#?重置當(dāng)前HEAD為指定commit零截,但保持暫存區(qū)和工作區(qū)不變
$?git reset --keep [commit]
#?暫時(shí)將未提交的變化移除麸塞,稍后再移入
$?git stash
$?git stash pop
六、文件信息
# ?顯示當(dāng)前分支的版本歷史
$?git log
#?搜索提交歷史涧衙,根據(jù)關(guān)鍵詞
$?git log -S [keyword]
#?顯示某個(gè)commit之后的所有變動(dòng)哪工,每個(gè)commit占據(jù)一行
$?git log [tag] HEAD --pretty=format:%s
#??顯示某個(gè)commit之后的所有變動(dòng),其"提交說(shuō)明"必須符合搜索條件
$?git log [tag] HEAD --grep feature
#?顯示某個(gè)文件的版本歷史弧哎,包括文件改名
$?git log --follow [file]
$?git whatchanged [file]
#?顯示指定文件相關(guān)的每一次diff
$?git log -p [file]
#?顯示過(guò)去5次提交
$?git log -5 --pretty --oneline
#?顯示所有提交過(guò)的用戶雁比,按提交次數(shù)排序
$?git shortlog -sn
#?顯示指定文件是什么人在什么時(shí)間修改過(guò)
$?git blame [file]
#?顯示暫存區(qū)和工作區(qū)的差異
$?git diff
#?顯示暫存區(qū)和上一個(gè)commit的差異
$?git diff --cached [file]
#?顯示工作區(qū)與當(dāng)前分支最新commit之間的差異
$?git diff HEAD
#?顯示兩次提交之間的差異
$?git diff [first-branch]...[second-branch]
#?顯示今天你寫了多少行代碼
$?git diff --shortstat "@{0 day ago}"
#?顯示某次提交的元數(shù)據(jù)和內(nèi)容變化
$?git show [commit]
#?顯示某次提交發(fā)生變化的文件
$?git show --name-only [commit]
#?顯示某次提交時(shí),某個(gè)文件的內(nèi)容
$?git show [commit]:[filename]
七傻铣、組件化常用整理
#?組件快速創(chuàng)建
$?pod lib create [組件名]
#?本地驗(yàn)證
$?pod lib lint
$?pod lib lint --allow-warnings ? ? ? ?##?本地驗(yàn)證? 忽略警告
#?遠(yuǎn)程驗(yàn)證
$ pod spec lint
$ pod spec lint --allow-warnings ? ?##?遠(yuǎn)程驗(yàn)證 忽略警告
#?查看本地索引庫(kù)
$ pod repo
#?向本地端提交索引庫(kù) 也就是把.spec 提交到本地創(chuàng)建的索引庫(kù)中
$ pod? repo? push [本地索引庫(kù)名稱] xxxx.spec
$ pod? repo? push [本地索引庫(kù)名稱] xxxx.spec --allow-warnings ? ?##忽略警告
#?移除本地索引庫(kù)
$ pod repo remove [本地索引庫(kù)名稱]
#?移除cocopod 索引文件
$ rm ~/Library/Caches/CocoaPods/search_index.json
八章贞、其他擴(kuò)展
#?顯示當(dāng)前分支的最近幾次提交
$?git reflog
#?記錄某個(gè)文件的更改歷史和更改人
$?git blame filepath
# 覆蓋本地內(nèi)容
$ git fetch --all ??
$?git reset --hard origin/master ?
$?git pull