Git 備查指南

這是我參與8月更文挑戰的第1天,活動詳情查看:8月更文挑戰前端

前言

經常使用的 Git 指令,一邊整理一邊複習,還順便 get 了新的指令。真 · 溫故而知新 😉git

基礎配置

1 查看、配置用戶信息

  • 配置用戶名:git config --global user.name "yourname"
  • 配置用戶郵箱:git config --global user.email "youremail@qq.com"
  • 查看用戶信息:git config --global --list
  • 查看用戶名、郵箱:git config user.namegit config user.email

image.png

2 配置 ssh 🔑

配置 ssh 後,使用ssh 地址 clone 項目,無需再輸入帳號密碼。一次配置,永久使用。😉github

檢查 ssh 是否存在markdown

  • cd ~/.ssh ,找到 .ssh 文件夾
  • lsll ,查看是否存在 id_rsa.pub
  • cat id_rsa.pub ,獲取祕鑰

image.png

若是 ssh 不存在,那就 ——ssh

生成祕鑰 ssh-keygen -t rsa -C "your-email@qq.com" 生成後就能夠經過上述方式找到 ssh,拷貝一下,接下來去 github ——oop

在 github 中添加祕鑰 點擊頭像 → Settings → SSH and GPG keys → New SSH key → 黏貼 ssh-rsa 開頭的串串 → 肯定添加 → OK啦! 🎉post

image.png

image.png

關於 ssh 的詳細操做和解說,參考: www.liaoxuefeng.com/wiki/896043…spa


基礎指令

1 倉庫管理

  • 本地建立 git 倉庫:git init
  • 本地倉庫關聯遠程倉庫:git remote add origin git@xxx.git 注意:關聯後第一次推送時添加 -u 參數,即:git push -u origin master 做用:-u--up-stream)用來創建本地分支與遠程某個分支的關聯,造成一個管道,以後可簡化命令,直接 git push
  • 克隆遠程倉庫:git clone git@xxx.git
  • 查看遠程倉庫地址:git remote -v
  • 查看遠程倉庫及分支信息:git remote show origin

2 分支管理

  • 查看當前分支:git branch
  • 查看全部分支:git branch -a
  • 建立分支:git branch xxx
  • 切換分支:git checkout xxx
  • 建立並切換分支:git checkout -b xxx (等同依次執行上面兩個命令)
  • 刪除分支:git branch -d xxx
  • 強制刪除未合併的分支:git branch -D xxx
  • 本地清理遠程已刪除的分支:git remote prune
  • 刪除遠程分支(非默認分支):git push origin --delete xxx
  • 合併分支:git merge xxx
  • 變基:git rebase xxx
    • 參數 --continue :遇到衝突的狀況,解決衝突後 continue
    • 參數--skip:跳過此次 rebase 操做

3 代碼管理

  • 拉取和推送rest

    • 查看當前分支本地與遠程對比:git status
    • 拉取新代碼:git pull
    • 添加指定修改到暫存區:git add <file>
    • 添加全部修改到暫存區:git add .
    • 提交修改到暫存區:git commit -m '備註信息'
    • 推送到遠程倉庫:git push
    • 查看本次修改的代碼:git diff
    • 摘取某個commit:git cherry-pick <commitId>
  • 撤銷修改日誌

    • 撤銷工做區指定文件的修改:git restore <file>git checkout -- <file>
    • 撤銷暫存區指定文件的修改:git restore --staged <file>git reset HEAD <file>
    • 撤銷暫存區全部文件的修改:git reset HEAD
    • 回退到上一個commit:git reset HEAD^
    • 回退到指定commit:git reset <commitId>
    • 回滾某次提交:git revert <commitId> (新增一個commit抵消以前的commit)
  • 髒代碼

    • 存儲髒代碼:git stash
    • 查看髒代碼列表:git stash list
    • 取出最近一個 stash:git stash pop
    • 取出指定 stash:git stash pop@{0}
    • 刪除指定 stash:git stash drop stash@{0}
  • 代碼管理示意圖

image.png

  • 版本回退示意圖

image.png

4 標籤管理

  • 打印全部標籤:git tag
  • 打印匹配正則的標籤:git tag -l test** (獲取以test開頭的分支)
  • 建立本地標籤:git tag test-1.0.0
  • 建立帶備註信息的本地標籤:git tag -a test-1.0.0 -m "備註信息"
  • 推送標籤到遠程倉庫:git push origin test-1.0.0
  • 推送全部標籤到遠程倉庫:git push origin --tags
  • 刪除本地標籤:git tag -d test-1.0.0
  • 刪除遠程倉庫標籤:git push origin --delete test-1.0.0

5 Git Log

在整理文章的過程當中,發現原來 git log 有這麼多玩法,好比說 --pretty 支持自定義輸出樣式,-S能夠按內容查詢日誌,還有個 git shortlog ,它甚至能按人員統計提交記錄、還能排序。 這可比我能想象到的強大多了。

  • 分支對比:git log master..dev (找出 dev 比 master 多的 commit)
  • 查看本地提交記錄:git loggit log dev
  • 查看遠程提交記錄:git log origingit log origin/dev
  • 按內容查找提交記錄:git log -S "Hello World"
  • 查看每一個用戶的 commit 次數和註釋 :git shortlog
    • 參數 -s:省略註釋,僅返回一個統計數
    • 參數 -n:按照 commit 數量遞減輸出

可選參數

參數 說明
--oneline 格式化,一行顯示,更簡潔清晰的展現
--stat 顯示每次提交的文件增刪數量
--graph 圖像化展現提交歷史記錄
--author 指定用戶
--pretty=format 自定義輸出格式
--since=<date> / --after=<date> 指定日期以後
--until=<date> / --before=<date> 指定日期以前

使用示例

查詢指定用戶某個時間區間的提交記錄: git log --author="tangjinzhou" --after="2021/6/1" --before="2021/6/30" --oneline

image.png

自定義輸出格式:git log --author="tangjinzhou" --pretty=format:"%h | %ad | %s"

image.png

自定義格式的參數說明

參數 說明
%H 提交對象(commit)的完整哈希字串
%h 提交對象的簡短哈希字串
%T 樹對象(tree)的完整哈希字串
%t 樹對象的簡短哈希字串
%P 父對象(parent)的完整哈希字串
%p 父對象的簡短哈希字串
%an 做者(author)的名字
%ae 做者的電子郵件地址
%ad 做者修訂日期(能夠用
%ar 做者修訂日期,按多久之前的方式顯示
%cn 提交者(committer)的名字
%ce 提交者的電子郵件地址
%cd 提交日期
%cr 提交日期,按多久之前的方式顯示
%s 提交說明

更多的 Git Log 玩法:git-scm.com/docs/git-lo…


參考連接

相關文章
相關標籤/搜索