# 引入本地個人設定，避免將個資存入版本控制
[include]
    path = ~/.gitconfig.local

# Git log 的預設顯示設定
[log]
    decorate = short             # 顯示簡短的 ref 名稱（例如 HEAD -> main）
    abbrevCommit = true         # 顯示簡短的 commit hash（例如 1a2b3c4）

# 常用 Git 指令的簡寫別名
[alias]
    br   = branch
    co   = checkout
    ci   = commit
    df   = diff
    st   = status
    g    = grep -I
    lg   = log -p

    # 顯示分支差異（未合併的 commit）
    ch   = log --cherry --pretty=format:\"%C(auto)%h (%ar) %an: %s\" --date-order --reverse

    # 彩色圖形化 log（適合查看整體歷史）
    loq  = log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative

    # 查找包含關鍵字的提交，並列出檔案異動
    find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep

# 分支相關設定
[branch]
    autosetuprebase = always     # 建立追蹤分支時預設使用 rebase 模式

# 顏色顯示設定
[color]
    ui = auto                    # 自動判斷是否啟用彩色輸出

[color "branch"]
    current = yellow reverse     # 當前分支：黃色反白
    local   = yellow             # 本地分支：黃色
    remote  = green              # 遠端分支：綠色

[color "diff"]
    meta = yellow
    frag = magenta
    old  = red
    new  = green

[color "status"]
    added     = yellow
    changed   = green
    untracked = cyan

# 推送行為設定
[push]
    default = simple             # 只推送目前分支（最安全）

# 自動記憶 conflict 解法，下次可自動套用
[rerere]
    enabled = 1

# 使用 Git 協定 v2（較快也支援更多功能）
[protocol]
    version = 2

# 新專案初始化時使用 main 作為預設分支
[init]
    defaultBranch = main

# 合併衝突顯示樣式
[merge]
    conflictStyle = zdiff3       # 使用較清楚的 zdiff3 格式（需 Git >= 2.35）

# GitHub CLI 整合登入憑證處理
[github]
    user = your-github-username

[credential "https://github.com"]
    helper =
    helper = !/usr/bin/gh auth git-credential

[credential "https://gist.github.com"]
    helper =
    helper = !/usr/bin/gh auth git-credential

# 使用 delta 作為美化 diff 的分頁器（需另行安裝 delta 工具）
[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true              # 支援方向鍵/jk 捲動檢視 diff
