目錄html
Markdown版本筆記 | 個人GitHub首頁 | 個人博客 | 個人微信 | 個人郵箱 |
---|---|---|---|---|
MyAndroidBlogs | baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
git help //顯示經常使用命令列表,省略了 -i, --info git 指令名 -help //顯示某一指令的使用幫助信息【經常使用】 git help -help //顯示help指令的使用幫助信息 git help -a //顯示全部可用的命令,--all git help config //打開幫助文檔:Git/mingw64/share/doc/git-doc/git-config.html git help help //打開幫助文檔:Git/mingw64/share/doc/git-doc/git-help.html git help git //打開幫助文檔:Git/mingw64/share/doc/git-doc/git.html
簡單命令git
git status //顯示工做目錄和暫存區的狀態,使用頻率絕對遙遙領先
git clone 倉庫地址 //將遠程項目克隆到當前目錄,默認在當前路徑(包含遠端的根目錄),此命令可配置的參數很是多 git clone 倉庫地址 本地路徑(文件夾) //不包含遠端的根目錄(本地目錄就是項目根目錄),會自動建立本地目錄 git clone --progress -v 倉庫地址 本地路徑 //小烏龜默認的clone命令(其實這些參數都不必配) git init //從新初始化一個現有倉庫(會產生一個.git目錄),默認在當前路徑 git init --bare //新建一個Git代碼倉庫,做爲純淨的倉庫(不會產生.git目錄)
git add . //能夠以空格分隔來一次add多個文件 git commit -m '信息' git commit -am '信息' //至關於【git add .】和【git commit -m】的組合 git commit --amend //修改最近的提交信息,通常先執行【git add .】操做
git push origin 遠程分支名 //這種狀況下,本地分支名和遠程分支名不一致時會push失敗 git push origin 本地分支名:遠程分支名 //適用於上面那種方式push失敗的狀況 git push origin HEAD:refs/for/遠程分支名
git stash git stash pop
git pull //慎用 git pull --rebase //經常使用
撤銷全部commit但保留修改內容github
git reset --soft 前一個提交的commitId
編輯了一個文件,尚未git add加入儲存區,這個時候,咱們能夠git checkout --file_name,來取消對它的修改。正則表達式
建立/切換分支。即git checkout -b dev。建立分支dev,並切換到dev分支。
等價於:git branch dev git checkput dev。
也能夠: git checkout -b dev origin/dev,即建立的本地分支dev是從遠程分支origin/dev獲得的。
而且你能夠看到;Branch 'dev' set up to track remote branch 'dev' from 'origin',即本地分支與遠程分支也創建了鏈接,因此,這個分支能夠和遠程的分支push和pull的。vim
git branch //查看本地分支,顏色爲白色,綠色帶星號的爲當前所在分支,省略了 -l, --list git branch -v //查看分支時帶hash值和最後的提交日誌(能夠和後面的組合),--verbose git branch -r //查看遠端分支,顏色爲紅色,--remotes git branch -a //列出全部分支,根據顏色可區分是本地分支仍是遠端分支,--all git branch -vv //查看本地分支與遠程分支的映射關係
git branch 分支名 //基於當前分支建立備份分支(不會checkout),省略了 -c, --copy;-C 強制複製 git branch aaa origin/bbb //基於遠程分支建立本地分支(不會checkout),省略了 -t, --track git branch 分支名 commitId //新建一個指向指定commit的分支 git branch -m 原分支名 新分支名 //修改本地分支名,--move;-M 強制更名,即便已存在
git checkout 分支名 //切到另外一本地分支,若是origin分支存在但本地分支不存在,則建立本地同名分支後checkout //若是origin分支和本地分支分支都不存在,或有未commit或未stash的文件,則不執行切換命令並報錯 git checkout -f 分支名 //若是有未commit或未stash的文件,則強制還原(重置)後切到另外一本地分支,--force git checkout -b 分支名 //基於當前本地分支建立備份分支,若是已存在則報錯,-B 強制建立 git checkout -b aaa origin/bbb //基於遠程分支建立本地分支【經常使用】 git checkout - //切換到上一個分支,使用此命令能夠在兩個分支之間快速切換
git branch -d 分支名 //刪除本地分支,該分支必須徹底和它的上游分支merge完成,--delete,delete fully merged branch git branch -D 分支名 //強制刪除本地分支,delete branch (even if not merged) git push origin -d 遠端分支名 //刪除遠程分支(服務端中的分支也會被刪除) git branch -dr origin/分支名 //刪除追蹤分支(沒有刪除遠程分支,pull後還會拉下來),--delete --remotes
git branch -u origin/分支名 //修改當前本地分支與指定遠程分支的映射關係,上游 --set-upstream-to git branch -u origin/分支名 本地分支名 //修改指定本地分分支與指定遠程分支的映射關係 git branch --unset-upstream //撤銷本地分支與遠程分支的映射關係,默認當前分支 git branch --unset-upstream 本地分支名 //撤銷指定分支
git branch --contains commitId //打印包含指定commitId的分支,即此commit之【後】拉的分支 git branch --no-contains commitId git branch --merged commitId //打印合並指定commitId的分支,即此commit之【前】已存在的分支 git branch --no-merged commitId
四種級別:local、global、system微信
local
對應的配置文件爲/.git/config
,適用於特定git項目的配置【最高優先級】global
對應的配置文件爲C:/Users/當前用戶/.gitconfig
,適用於當前登陸用戶的配置【中優先級】system
對應的配置文件爲/mingw64/etc/gitconfig
,適用於全部用戶和全部項目的配置【低優先級】worktree
估計是新增的,不經常使用,也不知道幹嗎的git config --global user.name 用戶名 //更新指定section下指定key的值,默認爲更新local下的配置信息 git config --global user.email 郵箱
git config --global alias.s status //設置別名,設置後【git s】和【git status】效果同樣 git config --global alias.c 'commit -am 日誌信息' //能夠用單引號或雙引號包起來 git config --global credential.helper store //配置長期存儲用戶名和密碼【untest】 git config remote.origin.push refs/heads/*:refs/for/* //設定提交的分支,默認爲local
git config --global -e //進入vim編輯配置信息,默認爲編輯local下的配置信息 git config --global --add 類別.鍵名 對應的值 //在指定section下添加鍵值對,默認爲local git config --global --add bqt.tel 18680536603 //注意:key已存在時不會覆蓋,同一個key能夠有多個value git config --global --unset user.tel //移除指定section下的鍵值對,默認爲local git config --global --unset-all user.tel //若是同一個key有多個value,必須使用此命令,默認爲local git config --global --rename-section aaa bbb //重命名section,默認爲local git config --global --remove-section bbb //移除section及其下全部的k-v,默認爲local
git config --global -l //參數 -l 爲 --list 列表 的簡寫 git config -l //獲取四種級別下全部配置的信息 git config --global --get user.name //查看某一具體key的配置信息,默認爲local git config --get-all user.name //獲取四種級別下某一具體key全部配置的信息
參考fetch
不帶參數的功能說明:.net
git log --abbrev-commit //僅顯示SHA-1的前7個字符,而非全部的40個字符(徹底能夠用短hash代替長hash) git log --relative-date //使用較短的相對時間顯示,例如 two weeks ago git log --oneline //僅在一行顯示提交信息,默認僅顯示短hash和提交日誌 git log --decoreate //顯示commit所屬的branch和tag信息 git log --graph //顯示ASCII圖形表示的分支合併歷史 git log --stat //在最後列出commit中全部修改過的文件以及其A、D行數,以及全部A、D行數小計 git log --shortstat //和--stat相比,只在最後列出全部A、D行數小計 git log --name-only //在最後顯示修改文件清單 git log --name-status //在最後顯示修改文件清單,及文件的A、M、D的狀態信息 git log -p //以diff的形式輸出每一個commit具體修改的內容,內容過於詳細,使用較少 git show commitId //以diff的形式輸出指定commit具體修改的內容 git blame 文件名 //看某和指定文件的相關歷史記錄
git log -5 //僅顯示最近的幾回提交 git log --no-merges //不顯示 merge 的提交,默認狀況下 git log 會包含 merge commit git log --merges //僅顯示 merge 的提交
git log --grep=bai //提交【日誌】中包含指定內容的提交,如下均支持正則表達式,添加-i能夠在過濾時忽略大小寫 git log --author='bqt\|bai' //做者的【user.name或user.email】包含指定內容的提交 git log --committer=bai //提交者的【user.name】包含指定內容的提交 git log -S"bqt" //搜索和指定內容相關的提交,使用-G代替-S可使用正則表達式去匹配
git log --after 2019.08/11-20:22:30 //指定時間以後(不含)的提交,對日期格式的要求很是寬鬆,能夠充分發揮想象力 git log --before "2 weeks ago" //(含),相對時間,"2 week",2.week,2week,用任何符號區分【-_/\*=+#】均可以 git log --after 2019.7.13 --before 2019.8.12 //注意,時間區間爲(7.13,8.12],或理解爲[7.14,8.13),左開右閉 git log --since 3hour //相似 after,常見的單位還有 second、minute、hour、day、week、year git log --until 3hour //相似 before,一樣能夠組合爲【--since yesterday --until 3hour】
git log 標籤名 //相似 before,顯示指定標籤以前(含)的提交 git log 標籤名.. //相似 after,顯示指定標籤以後(不含)的提交 git log commitId //相似 before,顯示截止到指定commitId以前(含)的提交 git log commit1 commit2 //顯示commit1與commit2之間的全部提交,而且包括commit1和commit2 git log commit1..commit2 //左開右閉,commit可使用HEAD(最後一次提交)代替,HEAD~n表明倒數第n次提交
git log 分支名或文件名 //只查看跟某些分支或文件(目錄)相關的提交,分支名必須徹底匹配,文件名支持通配符* git log -- 文件名 //若是產生混淆,可使用這種方式指定是文件名 git log 分支名 -- //若是產生混淆,可使用這種方式指定是分支名 git log 分支名 -- 文件名 //表明指定分支下的指定文件 git log b..a //分支a中有但分支b中沒有的提交,好比可用於列出feature相對於master的不一樣 git log b...a //三個點時表示或的意思
git log --pretty="%cn %h - %cd" //自定義輸出
git rebase -i commitId 【r】 //修改多個歷史提交信息 git rebase -i commitId 【d】 //刪除多個歷史提交 git rebase -i commitId 【s】 //合併多個歷史提交
git diff
git clean -df日誌
git remote -v //查看遠程庫信息(origin、fetch、push),--verbose 詳細 git remote show origin
git shortlog //按照做者分類輸出提交統計信息 git shortlog -s //對統計信息,按照做者進行排列,僅顯示做者和提交數量兩項信息 git shortlog -n //對統計信息,按照提交數量進行倒序排列