???git命令速查表:

??學習目錄:

??git 簡介:
- Git 是世界上最牛逼??的分布式版本控制系統
版本控制 是一個用來??記錄一個或多個檔案??內容變化,以便將來查閱??特定版本的修訂情況的系統

- 作業區(Working Directory):程式員進行???開發、改動、可視的目錄??或檔案夾??
- 平常我們開發就是拷貝遠程倉庫??中的一個分支,基于該分支進行開發,在開發程序中就是對作業區的操作
- 暫存區(Stage):?? git add 添加檔案的相關資訊??(檔案名、大小、timestamp...),以 id ??每個檔案物體
- ?? git status ??查看暫存區的狀態,暫存區??標記了你當前作業區中,哪些內容是被git管理的
- 版本庫(Repository):保存了??物件被提交過的各個版本???,比起作業區和暫存區的內容更舊一些
- ?? git commit ?? index目錄樹??到本地倉庫,??通過?? git push 同步本地倉庫與遠程倉庫
本章小結??
- 任何物件都是在作業區?????中誕生和被修改;
- 任何修改都是從進入index區??才開始被版本控制;
- 只有把修改提交到本地倉庫??,該修改才能在倉庫中留下痕跡;
- 與協作者分享本地的修改,可以把它們push到??遠程倉庫來共享
區域之間??

操作命令??
??HEAD

HEAD : 始終指向??當前所處分支的最新的提交點,你所處的分支變化了,或者產生了新的提交點,HEAD就會跟著改變
?ADD

ADD : 實作將作業區??修改的內容提交到暫存區??,交由git管理
#添加當前目錄的所有檔案到暫存區
> - ?? git add .
#添加指定目錄到暫存區,包括子目錄
>- ?? git add [dir]
#添加指定檔案到暫存區
> - ?? git add [file1]
??COMMIT

COMMIT : 實作將暫存區??的內容提交到本地倉庫??,并使得當前分支的HEAD??向后移動一個提交點
#提交暫存區到本地倉庫,??message 代表說明資訊??
> - ?? git commit -m [message]
#提交暫存區的指定檔案到本地倉庫???
>- ?? git commit [file1] -m [message]
#使用一次新的commit,??替代上一次提交
> - ?? git commit --amend -m [message]
branch???

#列出所有本地分支???
> - ?? git branch
#列出所有遠程分支??
>- ?? git branch -r
#??所有本地分支和遠程分支
> - ?? git commit --amend -m [message]
#??新建一個分支,但依然停留在當前分支
> - ?? git branch [branch-name]
#新建一個分支,并切換到??該分支
> - ?? git checkout -b [branch-name]
#新建一個分支,與指定的遠程分支建立??追蹤關系
> - ?? git branch --track [branch][remote-branch]
#??切換到指定分支,并??更新作業區
> - ?? git checkout [branch-name]
#??洗掉分支
> - ?? git branch -d [branch-name]
#?洗掉遠程分支
> - ?? git push origin --delete [branch-name]
merge??

merge : 把不同的分支合并起來
#merge之前先拉一下遠程倉庫最新代碼
> - ?? git fetch [remote]
#合并指定分支到當前分支
>- ?? git merge [branch]
Git Cheat Sheet
初始化倉庫
- 初始化倉庫
?? git init
- 初始化裸倉庫
?? git init --bare
- 克隆倉庫
?? git clone <git-repo>
配置
- 編輯組態檔
?? git config [--global] -e
- 列出配置資訊
?? git config -l
- 獲取相應的配置
?? git config --get core.editor
- 配置用戶郵箱
?? git config --global user.email <mail>
- 配置用戶名
?? git config --global user.name <name>
- 輸出彩色資訊
?? git config color.ui true
- 設定檔案名大小寫敏感
?? git config core.ignoreCase false
- 設定推送策略為 simple
?? git config push.default simple
- 設定 git 的編輯器是 vim
?? git config --global core.editor vim
- 設定命令別名
?? git config --global alias.co checkout
忽略檔案
- 添加本專案的忽略檔案
?? vim .gitignore
- 添加本專案的忽略檔案并不把此檔案納入版本管理
?? vim .git/info/exclude
- 設定全域忽略檔案
?? git config --global core.excludesfile ~/.gitignore
- 對已加入版本管理的檔案不做更改檢查
?? git update-index --assume-unchanged <file>
- 對已加入版本管理的檔案做更改檢查
?? git update-index --no-assume-unchanged <file>
添加洗掉移動檔案
- 添加所有檔案到暫存區,包括未追蹤檔案
?? git add -A
- 更新暫存區檔案
?? git add -u
- 互動式添加檔案到暫存區
?? git add -p
- 作業區與暫存區洗掉檔案
?? git rm <file>
- 僅暫存區洗掉檔案
?? git rm --cached <file>
- 重命名暫存區檔案
?? git mv <file> <file1>
作業區狀態
- 查看作業區的資訊
?? git status
- 查看作業區資訊并顯示分支及追蹤資訊
?? git status -sb
- 并查看忽略檔案的資訊
?? git status --ignored
- 列出忽略檔案
?? git check-ignore *
顯示更改
- 顯示作業區與暫存區的不同
?? git diff
- 顯示暫存區與本地倉庫的不同
?? git diff --cached
- 顯示作業區,暫存區與本地倉庫的不同
?? git diff HEAD
- 僅顯示改變的檔案
?? git diff --name-only
- 比較兩次提交的差異
?? git diff <commit> <commit>
- 顯示某次 commit 所做的更改
?? git show <commit>
列出檔案資訊
- 列出暫存區檔案
?? git ls-files
- 列出忽略檔案與未追蹤檔案
?? git ls-files -o
- 子目錄中顯示所在位置
?? git ls-files --full-name
儲藏與恢復
- 儲藏(stash)作業區相對暫存區更改的檔案
?? git stash
- 儲藏檔案并添加描述資訊
?? git stash save <message>
- 恢復最后一次儲藏的檔案
?? git stash apply
- 恢復最后一次儲藏的檔案并洗掉此次儲存記錄
?? git stash pop
- 查看儲藏串列
?? git stash list
恢復作業區
- 重置作業區某檔案
?? git checkout -- <file>
- 重置作業區
?? git checkout .
- 列出將要清除的未追蹤檔案
?? git clean -n
- 清除未追蹤檔案
?? git clean -f
- 清除忽略檔案
?? git clean -Xf
- 清除未追蹤目錄及檔案
?? git clean -df
回退版本
- 重置暫存區
?? git reset
- 重置作業區和暫存區
?? git reset --hard
- 恢復本分支到某次提交,重置作業區與暫存區
?? git reset --hard <commit-ish>
- 恢復本分支到某次提交
?? git reset --soft <commit-ish>
- 恢復本分支到某次提交,重置暫存區
?? git reset --mixed <commit-ish>
- 反向恢復一個提交并生成新的提交
?? git revert <commit>
分支
- 列出本地分支
?? git branch
- 列出本地分支與追蹤關系
?? git branch -vv
- 列出遠程分支
?? git branch -r
- 列出所有分支
?? git branch -a
- 建立分支不切換作業區
?? git branch <branch>
- 洗掉已被合并的分支
?? git branch -d <branch>
- 強制洗掉未被合并的分支
?? git branch -D <branch>
- 更改分支名字
?? git branch -m <newbranch>
- 設定追蹤分支
?? git branch -u <upstream>
切換分支
- 切換分支
?? git checkout <branch>
- 建立分支并切換作業區
?? git checkout -b <branch>
- 切換到最近一次分支
?? git checkout -
- 建立無任何提交歷史的分支
?? git checkout --orphan <branch>
合并分支
- 合并 develop 分支到本分支
?? git merge develop
- 強制合并分支后生成 merge commit
?? git merge -no-ff develop
- 合并最近切換分支
?? git merge -
- 變基合并 develop 分支
?? git rebase develop
- 變基進入互動式界面
?? git rebase -i
遠程倉庫
- 添加遠程倉庫并命名為 origin
?? git remote add origin <git-repo>
- 修改遠程倉庫的地址
?? git remote set-url origin <git-repo>
- 列出所有的遠程倉庫
?? git remote -v
- 列出遠程倉庫 origin 的詳細資訊
?? git remote show origin
- 推送與拉取
?? git config push.default simple
設定默認推送策略為 simple
- 推送 master 到遠程倉庫
?? git push origin master
- 推送到遠程倉庫并建立追蹤關系
?? git push -u origin master
- 推送時忽略 pre-push hook
?? git push -n
- 從遠程倉庫拉取檔案
?? git pull origin master
- 設定 rebase 模式拉取代碼
?? git pull --rebase origin master
提交
- 提交
?? git commit -m <message>
- 追加提交重置提交資訊
?? git commit --amend -m <message>
- 重置作者
?? git commit --amend --author=<mail>
- 允許空提交
?? git commit --allow-empty
- 提交時跳過 pre-commit hook
?? git commit -n
日志
- 顯示提交日志
?? git log
- 顯示某檔案的提交日志
?? git log -p <file>
- 以圖表形式顯示提交日志
?? git log --graph --all --oneline --decorate
- 顯示每次提交的物件資訊
?? git log --pretty=raw
- 顯示某個時間段的提交資訊
?? git log --since '2 days ago'
- 顯示指定作者的提交資訊
?? git log --author=<author>
- 根據提交資訊中的關鍵字查找
?? git log --grep=<keyword>
- 根據提交原始碼中的關鍵字查找
?? git log -S <keyword>
- 列出二者特有的提交
?? git log master...develop
- 列出 branch 有而 branch2 沒有的提交
?? git log branch2..branch
- 僅顯示 merge commit
?? git log --merges
- 統計每個作者的提交情況
?? git shortlog
- 統計每個作者的提交個數
?? git shortlog -sn
標簽
- 列出所有標簽并顯示標簽資訊
?? git tag -ln
- 添加一個標簽
?? git tag -a v1.0.0 -m <message>
- 在某個 commit 上添加一個標簽
?? git tag v0.9.0 <commit>
- 洗掉一個標簽
?? git tag -d v1.0.0
- 查看某個標簽資訊
?? git show v1.0.0
- 推送所有標簽到遠程倉庫
?? git push --tags
- 使用最近的標簽描述本次提交
?? git describe
追責(甩鍋)
- 找到最后一次提交的作者
?? git blame <file>
- 找到具體某一段的最后一次提交
?? git blame -L 10,18 <file>
- 查找檔案的修改歷史及明細
?? git log -p <file>
確認壞的提交
- 二分查找壞的提交
?? git bisect start <br> git checkout HEAD~20 <br> git bisect good <br> git bisect bad <br> git bisect reset
git物件
- 獲取改摘要資訊的型別
?? git cat-file -t <hash>
- 獲取改摘要資訊的內容
?? git cat-file -p <hash>
查找
- 在已追蹤檔案中查找關鍵字并指明行號
?? git grep -n hello
打包
- 打包
?? git archive -o arch.zip HEAD
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/114555.html
標籤:其他
上一篇:認識站內鏈接
下一篇:基于密度的網頁串列抽取
