Git常用命令參考

好記性不如一個爛筆頭,本文節選自:https://github.com/xjh22222228/git-manual
用的Android studio 開發,命令行什麼的不用怎麼記,切換遠程分支那個稍微留意下就好了。

推送總體流程

# 初始化
git init   
# 添加改動
git add .
# 備註提交信息
git commit -m "change message"  
# 推送
git push -u origin master

配置

# 查看全局配置列表
git config -l
# 查看局部配置列表
git config --local --list

# 查看已設置的全局用戶名/郵箱
git config --global --get user.name
git config --global --get user.email

# 設置全局用戶名/郵箱
git config --global user.name "xiejiahe"
git config --global user.email "[email protected]"

# 設置本地當前工作區倉庫用戶名/郵箱
git config --local user.name "xiejiahe"
git config --local user.email "[email protected]"

# 將默認文本編輯器設置爲 emacs
git config --global core.editor emacs

# 將默認差異化分析工具設置爲 vimdiff
git config --global merge.tool vimdiff

生成SSH_Key

# 1、粘貼以下命令,替換爲您的GitHub電子郵件地址
ssh-keygen -t rsa -b 4096 -C "[email protected]"

# 2、當提示“輸入要在其中保存密鑰的文件”時,按Enter。接受默認文件位置。
> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

# 3、在提示符下,鍵入一個安全密碼。
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

最後需要將生成的 SSH Key 添加到 ssh config 中

# 1、編輯
vim ~/.ssh/config

# 2、粘貼下面到 config 文件中
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

初始化倉庫

# 會在當前目錄生成.git
git init

# 以安靜模式創建,只會打印錯誤或警告信息
git init -q

日誌

# 查看完整歷史提交記錄
git log

# 查看前N次提交記錄 commit message
git log -2

# 查看前N次提交記錄,包括diff
git log -p -2

# 搜索關鍵詞
git log -S Java

# 只顯示合併日誌
git log --merges

# 以圖形查看日誌記錄, --oneline 可選
git log --graph --oneline

# 列出提交者貢獻數量, 只會打印作者和貢獻數量
git shortlog -sn

# 以提交貢獻數量排序並打印出message
git shortlog -n

# 採用郵箱格式化的方式進行查看貢獻度
git shortlog -e

# 查看 README.md 文件的修改歷史記錄,包括時間、作者以及內容
git blame README.md

克隆

# https 協議
git clone https://github.com/xjh22222228/git-manual.git

# SSH協議
git clone [email protected]:xjh22222228/git-manual.git

# 克隆某個分支, -b 指定分支名字
git clone -b master https://github.com/xjh22222228/git-manual.git

# 遞歸克隆,如果項目包含子模塊就非常有用
git clone --recursive [email protected]:xjh22222228/git-manual.git

# 克隆深度爲1, 不會把歷史的記錄也克隆,這樣可以節省克隆時間
git clone --depth=1 https://github.com/xjh22222228/git-manual.git

查看分支

# 查看所有分支
git branch --all

# 查看本地分支
git branch

# 查看遠端分支
git branch -r

切換分支

# 2種方法,切換到master分支
git checkout master
git switch master

# 切換上一個分支
git checkout -

# 切換遠端分支
git checkout -t origin/dev

創建分支

# 創建develop本地分支
git branch develop

# 創建本地develop分支並切換
git checkout -b develop

# 創建遠程分支, 實際上創建本地分支然後推送
git checkout -b develop
git push origin develop


# 創建一個空的分支, 不繼承父分支,歷史記錄是空的,一般至少需要執行4步
git checkout --orphan develop
# 這一步可選,如果你真的想創建一個沒有任何文件的分支
git rm -rf .
# 添加並提交,否則分支是隱藏的 (執行這一步之前需要注意當前工作區必須保留一個文件,否則無法提交)
git add -A && git commit -m "提交"
# 推送到遠程
git push --set-upstream origin develop

刪除分支

# 刪除本地分支
git branch -d <branchName>

# 刪除遠程分支
git branch -d -r origin/<branchName>
git push origin :<branchName>

重命名分支

# 重命名當前分支
git branch -m <branchName>

代碼合併

# 兩步法, 將 feature/v1.0.0 分支代碼合併到 develop
git checkout develop
git merge feature/v1.0.0

# 或者一步法
git merge feature/v1.0.0 develop

# 以安靜模式合併, 把develop分支合併到當前分支並不輸出任何信息
git merge develop -q

暫存

# 暫存所有
git add -A

# 暫存某個文件
git add ./README.md

# 添加當前目錄所有改動文件
git add .

# 暫存一系列文件
git add 1.txt 2.txt ...

刪除

# 刪除1.txt 文件
git rm 1.txt

# 刪除當前所有文件, 與rm -rf 命令不同的是不會刪除 .git 目錄
git rm -rf .

# 清除當前工作區緩存,但不會刪除文件,通常用於修改文件名不生效問題
git rm -r --cached .

提交

# -m 提交的信息
git commit -m "changes log"

# 提交併顯示diff變化
git commit -v

# 允許提交空消息,通常必須指定 -m 參數
git commit --allow-empty-message

# 重寫上一次提交信息,確保當前工作區沒有改動
git commit --amend -m "新的提交信息"

推送

# 推送內容到主分支
git push -u origin master

# 本地分支推送到遠程, 本地分支:遠程分支
git push origin <branchName>:<branchName>

# 簡寫,默認推送當前分支
git push

# 強制推送, -f 是 --force 縮寫
git push -f

拉取最新內容

# 推薦,因爲不會做自動合併
git fetch origin master

# 相當於git fetch 然後 git merge
git pull

# 後面的意思是: 遠程分支名:本地分支名
git pull origin master:master

# 如果是要與本地當前分支合併,則冒號後面的<本地分支名>可以不寫
git pull origin master

查看文件改動

# 查看所有文件改動
git diff

# 查看具體文件的改動
git diff README.md

# 查看某個版本的改動, 後面那一竄是commitId, git log後就能看到
git diff d68a1ef2407283516e8e4cb675b434505e39dc54

# 查看某個文件的歷史修改記錄
git log README.md
git show d68a1ef2407283516e8e4cb675b434505e39dc54 README.md

回滾版本

# 回滾上一個版本
git reset --hard HEAD^

# 回滾上兩個版本
git reset --hard HEAD^^

# 回退到指定版本,git log 就能看到commit id了
git reset --hard 'commit id'

# 回滾版本是不保存在 git log,如果想查看使用
git reflog

撤銷

# 撤銷當前目錄下所有文件的改動
git checkout -- .

# 撤銷指定文件修改
git checkout -- README.md

# 暫存區回到工作區, 指定 ./README.md 文件從暫存區回到工作區
git reset HEAD ./README.md

# 撤銷commit, 回到工作區, 一般commit id 是前一個
git reset <commit_id>

# 撤銷commit, 並且把修改同時撤銷
git reset --hard <commit_id>

標籤

# 列出本地所有標籤
git tag

# 列出遠程所有標籤
git ls-remote --tags origin

# 按照特定模式查找標籤, `*` 模板搜索
git tag -l "v1.0.0*"

# 創建帶有附註標籤
git tag -a v1.1.0 -m "標籤描述"

# 創建輕量標籤, 不需要帶任何參數
git tag v1.1.0

# 後期打標籤, 假設之前忘記打標籤了,可以通過git log查看commit id
git log
git tag -a v1.1.0 <commit_id>

# 推送到遠程,默認只是本地創建
git push origin v1.1.0

# 一次性推送所有標籤到遠程
git push origin --tags

# 刪除標籤, 你需要再次運行 git push origin v1.1.0 才能刪除遠程標籤
git tag -d v1.1.0

# 刪除遠程標籤
git push origin --delete v1.1.0

# 檢查標籤
git checkout v1.1.0

# 查看本地某個標籤詳細信息
git show v1.1.0

幫助

# 詳細打印所有git命令
git help

# 打印所有git命令, 此命令不會有詳細信息,更清晰一些
git help -a

# 列出所有可配置的變量
git help -c

其他

# 查看git版本
git --version

# 查看遠程倉庫地址
git remote -v

# 記住提交賬號密碼
git config --global credential.helper store

# 清除git已保存的用戶名和密碼
# windows
git credential-manager uninstall
# mac linux
git config --global credential.helper ""
# 或者
git config --global --unset credential.helper

# 清除本地git緩存
git rm -r --cached .
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章