compliance/add_specific_file.sh
2025-08-07 17:14:40 +08:00

83 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# 添加特定文件到Git跟踪的脚本
# 即使文件在.gitignore中被忽略
if [ $# -eq 0 ]; then
echo "用法: $0 <文件名>"
echo "示例: $0 users.db"
exit 1
fi
FILE="$1"
echo "🔍 添加文件到Git跟踪: $FILE"
echo "=========================="
# 检查文件是否存在
if [ ! -f "$FILE" ]; then
echo "❌ 文件不存在: $FILE"
exit 1
fi
# 检查是否在Git仓库中
if ! git rev-parse --git-dir > /dev/null 2>&1; then
echo "❌ 当前目录不是Git仓库"
exit 1
fi
# 检查文件是否被忽略
if git check-ignore "$FILE" > /dev/null 2>&1; then
echo "⚠️ 文件 $FILE 被.gitignore忽略"
echo "使用强制添加..."
git add -f "$FILE"
else
echo "✅ 文件未被忽略,正常添加"
git add "$FILE"
fi
# 检查是否成功添加
if git diff --cached --name-only | grep -q "^$FILE$"; then
echo "✅ 文件已添加到暂存区"
# 显示文件状态
echo ""
echo "📊 文件信息:"
ls -lh "$FILE"
echo ""
echo "📋 Git状态:"
git status --short "$FILE"
echo ""
read -p "是否提交此文件? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "💾 提交文件..."
git commit -m "Add $FILE to version control
- Force add $FILE even if ignored by .gitignore
- File size: $(ls -lh "$FILE" | awk '{print $5}')
- This file is needed for the project"
echo "✅ 文件已提交"
echo ""
read -p "是否推送到远程? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
git push
echo "✅ 已推送到远程"
fi
else
echo "⚠️ 文件在暂存区,记得稍后提交:"
echo " git commit -m 'Add $FILE'"
fi
else
echo "❌ 文件添加失败"
exit 1
fi
echo ""
echo "🎉 完成!"