#!/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 "🎉 完成!"