git使用手册
git使用手冊
由 趙慶鵬創建, 最后修改于十二月 14, 2018
一、文件比較
1. 新建兩個文件hello/world,內容可自定義,兩個文件的內容,需要不相同,進行文件比對。2. 使用diff -u hello world > diff.txt,進行文件比對,查看效果。3. 使用cp hello world對文件進行覆蓋,并使用patch world < diff.txt對world文件進行恢復。4. 使用cp world hello對文件進行覆蓋,并使用patch -R hello < diff.txt對hello文件進行恢復。
二、字符集設置
1. 亂碼:git config --global core.quotepath false2. 設置字符集:git config --global i18n.logOutputEncoding gbk(log輸出)/ git config --global i18n.commitEncoding gbk
三、初始化全局參數
1. 設置全局用戶參數:git config --global user.name "yourname"2. 設置全局用戶郵箱參數:git config --global user.email "youremail"3. 設置全局用戶gitreview參數:git config --global gitreview.username "yourname"4. 設置命令別名:git config --system alias.st status/alias.ci commit/alias.co checkout/alias.br branch5. 設置顏色顯示:git config --global color.ui true6. 創建一個目錄并初始化git:mkdir demo && git init7. 編輯.git/config文件:git config -e8. 編輯.gitconfig文件:git config -e --global9. 編輯系統配置:git config -e --system10. 刪除用戶配置信息:git config --unset --global11. 設置全局忽略文件/設置本地忽略文件 git config --global core.excludesfile / git config core.excludesfile
四、操作指令
1. git status 顯示工作路徑下已修改的文件,-s 精簡輸出,-b 顯示當前工作分支2. git diff <commit1> <commit2> -- <path> 顯示與上次提交版本文件的不同,HEAD 將工作區和HEAD相對比差異,--cached/–staged 提交暫存區和版本庫中文件的差異 <path1><path2> 非git目錄/文件差異比較3. git add & git add -p <file> 把當前所有修改添加到下次提交中/把對某個文件的修改添加到下次提交中 git add -u 將本地有改動(包括修改和刪除)的文件標記到暫存區 git add -i 交互式添加文件 git add -f <filename> 強制指定文件名4. git grep <contect> & git grep <contect> <tag> 從當前目錄的所有文件中查找文本內容/從當前目錄的所有文件中查找某一個版本的文本5. git rev-parse --git-dir 顯示版本庫.git目錄位置6. git rev-parse --show-toplevel 顯示工作區根目錄7. git rev-parse --show-prefix 相對于工作區根目錄的相對目錄8. git rev-parse --show-cdup 顯示從當前目錄(cd)后退(up)到工作區的根的深度9. git commit --allow-empty -m "yourmessage" 允許空白提交10. git log --pretty=fuller/raw --graph <id> / --oneline 顯示全部commit log信息/顯示每個提交對象的parent屬性 / 顯示跟蹤鏈 / 對父提交的關聯實現對提交歷史的追溯11. git commit --amend --reset-author 對提交進行修補,以改正前面提交中錯誤的信息/將author的ID同步進行修改12. git log --stat / --decorate / -p / -m 顯示每次提交的文件變更統計 / 顯示該提交關聯的引用 / 顯示日志的同時顯示改動 / 顯示從哪個提交修改的13. git reset HEAD,緩存區目錄樹重寫,將被master分支指向的目錄樹替換,工作區不受影響14. git rm --cached <file> 從緩存區刪除文件,工作區不做改變15. git checkout . / git checkout -- <file> / git checkout HEAD . / git checkout HEAD <file> 前兩者使用暫存區全部的文件或指定的文件替換工作區的文件,后兩者使用HEAD指向的master分支中的全部或部分文件替換暫存區和工作區文件16. git clean -fd 清除當前工作區中沒有加入版本庫的文件和目錄(非跟蹤文件和目錄) -nd 查詢哪些文件會被刪除,防止誤刪除17. git ls-tree / ls-files --with-tree 查看暫存區目錄樹文件大小/查看暫存區目錄樹存放位置,并指定樹的位置18. git write-tree 將暫存區的目錄樹寫入git對象庫19. git write-tree | xargs git ls-tree -l -r -t 遞歸操作顯示目錄樹的內容20. git stash 保存當前工作進度,暫存區/工作區狀態保存 list 查看保存的進度 pop [--index] [<stash>] 恢復最新保存的進度,提供<stash>參數,則從該<stash>中恢復,回復后,則刪除該<stash> --index 除恢復工作區文件外,還可嘗試恢復暫存區 [save [--patch] [-k | --[no-] keep-index] [-q] | --quiet] [<message>] eg: git stash save "message..." --patch 顯示工作區和HEAD的差異,通過編輯差異文件,決定最終保存工作區的內容,并排除無關內容 -k 或 --keep-index參數,保存后不會重置暫存區 apply [--index] [<stash>] 與pop類似,但不刪除恢復的進度 drop [<stash>] 刪除進度,默認刪除最新進度 clear 刪除所有進度 branch <branchname> <stash> 基于進度創建分支21. git cat-file -t <id>/ -p <id> 查看id的類型 / 查看id的詳情 git show <tag> --stat 查看和分析某個提交22. git branch 顯示當前工作分支 -v 顯示詳情 23. git reset 重置,將HEAD游標指向任意一個存在的提交ID --hard 破壞工作區未提交的改動 --soft 只修改引用的指向,不改變暫存區和工作區 --mixed 更改引用的指向及重置暫存區,不改變工作區24. git reflog show master / expire --expire=<date> -all 查看master分支修改的記錄,用于reset后的恢復 / 強制讓<date>之前的記錄全部過期25. git merge [-s <strategy>] [-X <strategy-option>] <commit> ... 合并,將其他分支的提交和當前分支的提交進行合并 -s 設定合并策略 -X 設置合并策略提供附件的參數 / --no-commit 合并后,放入暫存區,檢查后,合并到共享倉庫 / 合并策略有:① resolve 只能合并兩個頭,三向合并策略,最安全、最快的策略 ② recursive 只能合并兩個頭,三向合并策略,默認合并策略 a. ours 沖突時,選擇本地當前分支版本,忽略其他版本,若不沖突,則合并他人改動 b. theirs 丟棄自己的版本,選擇他們的版本 c. subtree[=path] 子樹合并策略 ③ octopus 兩個以上的合并頭指針,拒絕執行手動解決合并 ④ ours 合并任意數量的頭指針,合并結果總是使用當前分支,忽略他人分支 ⑤ subtree 合并A、B,若B、A中一個子樹相同,B先匹配A的樹結構26. git checkout [-q] [<commit>] [–] <paths> / git checkout [<branch>] / git checkout [-m] {[-b | --orphan] <new_branch>} [<start_point>] commit為可選項,覆蓋工作區,不會該表HEAD頭指針 / 改變HEAD頭指針,若不使用branch參數,則對工作區進行檢查 / 創建和切換新的分支,新的分支以<start_point>指定的提交開始創建27. git describe 將最新提交顯示為一個易記的名稱,選取離該提交最近的里程碑作為“基礎版本號” --dirty 顯示tag版本號中文件已被修改標記 --always 顯示精簡提交ID28. git mv <old_filename> <new_filename> 修改文件名29. git archive -o <zipfile> HEAD <dir> / --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz 歸檔壓縮 -o 指定壓縮文件名 HEAD 指定分支 --format 指定壓縮格式 --prefix 指定tag30. gitk -all 顯示所有分支 --since="2 weeks ago" 兩周內的所有提交 <tag> <dir>/<file> 某個tag以來,針對dir/file的提交31. git rev-parse --symbolic --branches 顯示分支信息 --tags 顯示里程碑信息 --glob=<branch> 顯示定義的所有引用32. git rev-parse --oneline <branch1> <branch2> ... 顯示分支的所有歷史提交 33. git blame <filename> 文件追溯 -L n,m 查看從第n行開始,往后m行的數據34. git bisect 二分查找 good/bad 好提交/壞提交 存放位置refs/bisect/good--/bad / reset 結束正在進行的出錯的二分查找 / replay logfile 通過日志文件恢復進度,重啟二分查找 / run sh <script> 運行自動化測試腳本35. git cherry-pick <branch> 揀選操作,將其他分支連接到checkout分支,注意,在cherry-pick時,本地未提交的內容,均需要進行提交,否則,會觸發cherry-pick的正在進行操作,即amend,操作完成后,需要--continue參數繼續。36. git rebase --onto <newbase> <since> <till> 將指定范圍內的提交,嫁接到另外一個提交之上 --onto 提交1 提交2 本地提交 / <newbase> 里程碑編號 將提交嫁接到里程碑上 / -i <since>...<till> 交互式操作,將多個提交悉數放在一個文件中進行提交37. git commit-tree 從目錄樹創建提交38. git revert 反轉提交39. git clone 版本庫克隆 <repository> <directory> 將前者指向的版本庫創建一個克隆到后者目錄中 / --bare <repository> <directory.git> 不包含工作區的克隆,不對上游版本庫進行注冊 / --mirror <repository> <directory.git> 不包含工作區的克隆,對上游版本庫進行注冊,并可使用git fetch和上游版本庫持續同步40. git pull/push 提交/拉回 [<remote-repos> [<refspec>]] 前者參數可省略,是遠程版本庫的地址或名稱,后者為引用 / git push -f 強制推送 / git pull == git fetch + git merge41. git pack-refs -all / --all--prune 打包所有refs文件,到packed-refs中,默認90天前記錄清理 / 未關閉gc.packrefs,可實現對引用的打包42. git show-index < <index路徑> 43. git fsck / git prune 查看版本庫中包含的沒有被任何引用關聯的松散對象 --no-reflogs 找到看不到未被關聯到的對象 / 清理未被引用的松散對象44. git gc / --prune=<date> 對分散在 .git/refs下的文件打包到.git/packed-refs中 / 對指定日期之前的未被關聯的松散對象進行清理,將時間參數傳遞給 git prune --expire <date>,默認清楚2周以前未被關聯的對象45. git repack 對有引用關聯的對象進行打包,未被引用關聯的對象不做操作46. git tag 顯示當前版本庫的tag列表 -n<num> 顯示<num>行說明 -a <tagname> [<commit>] / -m <msg> <tagname> [<commit>] 創建帶說明的里程碑 -s <tagname> [<commit>] / -u <key-id> <tagname> [<commit>] 創建帶GunPG簽名的里程碑 -u參數指定私鑰進行簽名 -d 刪除里程碑 <tag><commit-id> 恢復誤刪除的里程碑 -f / --force 強制覆蓋已有的里程碑47. git name-rev 顯示提交ID及其對應的一個引用,默認優先使用分支名,若提交上沒有相對應的引用,則會使用最新提交上的引用名稱并加上向后回溯的符號~<num> --tags 優先使用里程碑48. git ls-remote 查看上游版本庫的引用49.
總結
- 上一篇: 王者荣耀怎么设置拒绝加好友?
- 下一篇: 轻量级git服务器 Gogs git 服