常用Git指令一覽表 | Git

常用 Git 指令一覽表 | Git

常用 Git 指令一覽表


# 查看commit(提交)紀錄
git log
# 單行模式
git log --oneline
# 反轉順序
git log --oneline --reverse
# 圖形化
git log --oneline --graph

# 查看最後3條commit
git log --oneline -3

# 查看指定作者的提交
git log --oneline --author="<username>"

# commit時間範圍
git log --oneline --after="2020-08-17"
git log --oneline --after="yesterday"
git log --oneline --after="one week age"
git log --oneline --before="2020-08-16"

## commit message keyword search(區分大小寫)
git log --oneline --grep="<keyword>"


## 搜尋code 中的函數或是特定關鍵字非常好用
git log --oneline -S"<keyword>" --patch

## 搜尋 git commit 範圍
git log <commit id>..<commit id>

## 查看指定文件修改歷史
git log --oneline <filename>

## 注意--patch 一定要放在<filename>的前面
git log --oneline --patch -- <filename>

# format
# %an => author
# %H => commit hash id(long hash)
# %h => commit hash id(short hash)
# %cd => commit date
git log --pretty=format:"%an committed %H on %cd"

# 查看單一個提交紀錄
git show <commit id>
# 查看最後一個提交紀錄
git show HEAD
# 查看倒數第二個提交紀錄
git show HEAD~1
# 查看指定文件在指定提交紀錄中的快照
git show <commit id>:<file path>
# 查看指定commit有變化的文件名(或包含狀態)
git show HEAD~2 --name-only
git show HEAD~2 --name-status
# 顯示指定提交中的文件樹狀結構,透過tree,我們可以往下查找
git ls-tree HEAD~1

# 查看2次提交之間的更改
git diff HEAD~2 HEAD

git diff HEAD~2 HEAD --name-only

git diff HEAD~2 HEAD --name-status

# 指定文件查看2次不同提交的版本變動差異
git diff <commot id> <commit id> <filename>

# 全局設定user
git config --global user.name "<username>"
# 全局設定email
git config --global user.email "<email>"

# 使用vs code 編輯Git全局設定
git config --global core.editor "code --wait"
# 開啟編輯
git config --global -e


# 修復 CR LF 的問題
# Windows
git config --global core.autocrlf true
# Mac
git config --global core.autocrlf input


# 初始化Git Repository
git init


# 將檔案加入到Staging中
git add .


# 查看狀態
git status
# 簡潔模式
git status -s


# 提交
git commit -m "<commit message>"
# 跳過Staging,直接提交
git commit -am "<commit message>"

# 列出項目中被 Git 追蹤的檔案
git ls-files

# 刪除
# 從工作目錄和版本庫中刪除 <filename>
git rm <filename>
# 從版本庫中刪除 <filename>,但保留在工作目錄中
git rm --cached <filename>
# 從版本庫中刪除目錄 <dir>,但保留在工作目錄中
# -r:這部分表示遞迴處理目錄,即刪除目錄及其內容
git rm --cached -r <dir>

# 如果我們想要找回誤刪的文件,但是我們又不想要撤銷最後一次的commit
git restore --source=<commit id> <filename>

# 讓指定檔案從staging中回到untracked或是modifier
git restore --staged <filename>

# 全部都回到untracked或是modifier
git restore --staged .

# untracked的文件並不會被刪除
git restore .

# 這樣untracked文件才會被刪除
git clean

# 這種刪除很危險,沒有辦法回復,要謹慎使用
git clean -fd