如何让Git rebase在存在未跟踪文件时停止执行
解决Git Rebase时未跟踪文件持续传递的问题
核心方案:通过pre-rebase钩子阻止未跟踪文件下的rebase执行
在Git仓库的.git/hooks/目录下创建(或修改)pre-rebase脚本,添加以下代码实现未跟踪文件检测,一旦存在就终止rebase流程:#!/bin/sh # 筛选出未跟踪且未被.gitignore忽略的文件 UNTRACKED_FILES=$(git ls-files --others --exclude-standard) if [ -n "$UNTRACKED_FILES" ]; then echo "错误:存在未跟踪文件,终止rebase。请先处理这些文件(添加到暂存区、删除或添加到忽略列表)。" echo "未跟踪文件列表:" echo "$UNTRACKED_FILES" exit 1 fi # 无未跟踪文件时,允许rebase继续执行 exit 0保存后给脚本添加可执行权限:
chmod +x .git/hooks/pre-rebase此后每次执行
git rebase前,Git会自动运行该脚本,检测到未跟踪文件就直接终止操作,避免未跟踪文件被带入后续rebase步骤。额外提示
- 若临时需要跳过检查,可执行
git rebase --no-verify,但不建议在存在未跟踪文件时频繁使用,仍有数据风险。 - 若希望自动暂存未跟踪文件而非终止rebase,可执行
git config --global rebase.autostash true,但这仅会暂存文件,rebase完成后恢复,不符合"阻止执行"的需求。
- 若临时需要跳过检查,可执行
内容的提问来源于stack exchange,提问作者Devin Rhode
相关产品推荐
相关产品推荐

