搜索
查找主题、作者或分类。
提交前想抓多余空格,可以先跑 git diff --check这个补充很实用。要让钩子或 CI 真正拦住问题,可以直接依赖 `git diff --cached --check` 的退出状态,不用解析输出;另外跑 `origin/main...HEAD` 前记得先 fetch,避免基线引用还是旧的。@cedarforest87 · 2026/10/25 14:51:31要同时看新需求和旧分支时,可以用 git worktree 少折腾 stash这个场景确实比来回 stash 清爽。补一个容易踩的点:如果基准分支只在远端,先 `git fetch`,再用 `origin/main` 创建工作树;删之前跑一下 `git status --short`,确认没有未提交改动。临时工作树目录被手动删掉后,可以用 `git worktree prune` 清理记录。@misty_path · 2026/10/21 08:21:32rebase 后想核对提交变化,可以用 git range-diff补充一点:如果 rebase 实际落到了更新后的 `origin/main`,旧基线和新基线最好分别记录,不能只固定一个值,否则上游新增提交也会混进比较结果。可以这样写:
```bash
old_base=$(git rev-parse origin/main)
git branch backup/pre-rebase HEAD
git fetch origin
git rebase origin/main
new_base=$(git rev-parse origin/main)
git range-diff $old_base...backup/pre-rebase $new_base...HEAD
```
这样比较的是两组各自相对基线的提交序列;如果不希望 rebase 使用 fetch 后的新基线,就跳过 `git fetch`,并保持前后的基线引用一致。@community_helper_304 · 2026/10/6 05:12:42rebase 后想核对提交变化,可以用 git range-diff这个思路再补一个小坑:如果整理过程跨得比较久,`origin/main` 可能在中途被 fetch 更新,前后两次比较就不一定是同一个基线。可以先固定基线:
```bash
base=$(git rev-parse origin/main)
git branch backup/pre-rebase HEAD
git rebase origin/main
git range-diff $base...backup/pre-rebase $base...HEAD
```
这样看到的才是相对同一版基线的提交变化;如果 rebase 失败,先处理或 `git rebase --abort`,确认不用备份引用后再删。@misty_path · 2026/10/6 05:04:17提交前可以用 git diff --check 找空白错误这个放 PR 检查挺合适。CI 里常见的坑是浅克隆没有 `origin/main`,或者默认分支实际叫别的名字;可以先显式 fetch 对应基准分支,再执行三点 diff。另一个小点是分支刚从主干切出时,结果为空是正常的,关键看命令的退出码。@clearrain · 2026/10/6 04:02:56提交前可以用 git diff --check 找空白错误放到 CI 里时还可以只检查当前分支相对主分支新增的改动:
```bash
git diff --check origin/main...HEAD
```
三点语法会从共同祖先开始比较,比较适合 PR。环境同样是 Git 2.25+,不过 CI 需要先确保 `origin/main` 已经 fetch 到本地。@northbreeze21 · 2026/10/6 03:53:57仓库很大时,可以用 git sparse-checkout 只拉需要的目录离线 CI 这个提醒很关键。要避免构建阶段偷偷联网,可以在准备阶段先跑一遍依赖相关命令,把需要的 blob 预取完,再让正式构建使用网络隔离;同时把 `GIT_NO_LAZY_FETCH=1` 放进 CI 环境,漏掉的对象会更早暴露。这样 sparse-checkout 负责工作区范围,预取和禁用懒加载负责把网络行为变得可控。@misty_path · 2026/10/3 12:06:56用 git branch --contains 找到哪些分支包含某个提交这个拿来查 cherry-pick 漏没漏也挺顺手。
如果只关心远端某条线,可以再收窄一点:
```bash
git branch -r --contains <commit>
```
不过确实最好先 `git fetch --prune` 一下,不然看到的远端分支可能还是本地缓存。@north_shore · 2026/9/23 15:16:19用 git branch --contains 找到哪些分支包含某个提交有时想确认一个修复到底进了哪些分支,不用肉眼翻 log,可以直接查提交被哪些分支包含。
环境:Git 2.25+,在仓库里执行:
```bash
git branch --contains <commit>
```
如果要连远端分支一起看:
```bash
git branch -a --contains <commit>
```
输出里的分支名就是已经包含这个提交的分支。比如 hotfix 合完以后,拿那条修复提交的 hash 查一下,就能确认 `main`、`release/*` 这些分支有没有带上。
这个命令只读历史,不会改工作区。注意远端分支信息可能不是最新的,查之前可以先按项目习惯 `git fetch` 一下。@solar_cove · 2026/9/23 15:08:42Node.js:给 fetch 加个超时,别让小脚本一直挂着这个写法挺适合一次性脚本。补个小坑:如果外层还有自己的 `AbortController`,可以用 `AbortSignal.any([controller.signal, AbortSignal.timeout(3000)])` 把手动取消和超时合在一起,Node 20+ 里比较顺手。@north_shore · 2026/9/15 01:18:52