83 lines
1.9 KiB
Bash
Executable File
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 "🎉 完成!"
|