跳转至

Git、SSH、curl 与 jq

这些工具常用于开发协作、接口排查、远程登录、自动化脚本和日志分析。它们不是系统命令的边角料,而是日常排障的主力工具。

Git 常用命令

# 查看状态
git status

# 查看分支
git branch

# 查看远程
git remote -v

# 拉取更新
git pull

# 提交
git add .
git commit -m "docs: update commands"

# 查看历史
git log --oneline --decorate -n 10

# 查看差异
git diff
git diff --staged

Git 排查

# 查看当前配置
git config --list

# 查看某个文件历史
git log -- path/to/file

# 查看某次提交
git show <commit>

# 查看远程分支
git branch -r

常见问题:

  • 没有权限 push。
  • 远程地址错误。
  • 本地分支落后远程。
  • 冲突未解决。

SSH key

# 生成密钥
ssh-keygen -t ed25519 -C "your_email@example.com"

# 查看公钥
cat ~/.ssh/id_ed25519.pub

# 测试 GitHub SSH
ssh -T git@github.com

# 指定密钥连接
ssh -i ~/.ssh/id_ed25519 user@host

安全提醒:

  • 不要提交私钥。
  • 不要把私钥粘贴到 Issue 或聊天窗口。
  • 公钥可以公开,私钥必须保密。

curl

# 查看响应头
curl -I https://example.com

# GET 请求
curl https://example.com/api

# POST JSON
curl -X POST https://example.com/api \
  -H "Content-Type: application/json" \
  -d '{"name":"demo"}'

# 显示详细连接过程
curl -v https://example.com

# 跟随重定向
curl -L https://example.com

排查建议:

  • 连接失败看 DNS、网络、防火墙。
  • 证书失败看证书链和系统时间。
  • 502/504 看代理和后端服务。

jq

# 格式化 JSON
cat data.json | jq .

# 取字段
cat data.json | jq '.name'

# 取数组
cat data.json | jq '.items[]'

# 过滤
cat data.json | jq '.items[] | select(.status=="running")'

结合 curl:

curl -s https://example.com/api | jq .

tar/zip

# 打包
tar -czf logs.tar.gz /var/log/app

# 解包
tar -xzf logs.tar.gz

# zip 压缩
zip -r logs.zip logs/

# unzip 解压
unzip logs.zip

常用组合

# 拉取接口 JSON 并过滤字段
curl -s https://example.com/api | jq '.data[] | {id,name,status}'

# 打包日志用于排查
tar -czf app-logs.tar.gz /var/log/app

# 查看最近提交修改了哪些文件
git show --name-only --oneline <commit>