pre-push
1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo ""
echo "🚀 ${BLUE}准备 Push 到远程仓库...${NC}"
echo ""
# 获取当前分支
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
REMOTE_BRANCH=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null || echo "")
# 如果是新分支,自动继续
if [ -z "$REMOTE_BRANCH" ]; then
echo " ${YELLOW}⚠️ 检测到新分支: $CURRENT_BRANCH${NC}"
echo " ${YELLOW}这将是首次推送到远程${NC}"
echo ""
fi
# ============================================
# 1. 检查是否有未推送的 commit
# ============================================
echo "📋 ${BLUE}步骤 1/2: 检查提交历史${NC}"
UNPUSHED_COMMITS=$(git log @{u}..HEAD 2>/dev/null | grep -c "^commit" || true)
if [ "$UNPUSHED_COMMITS" -gt 5 ]; then
echo ""
echo " ${YELLOW}⚠️ 检测到 $UNPUSHED_COMMITS 个未推送的提交${NC}"
echo " ${YELLOW}建议:频繁推送可以减少合并冲突${NC}"
echo ""
echo " ${BLUE}最近的提交:${NC}"
git log --oneline -5
echo ""
fi
echo " ${GREEN}✅ 提交历史检查通过${NC}"
# ============================================
# 2. 最终确认(可选)
# ============================================
echo ""
echo "📋 ${BLUE}步骤 2/2: 最终确认${NC}"
echo ""
echo " ${BLUE}分支信息:${NC}"
echo " 当前分支: $CURRENT_BRANCH"
if [ -n "$REMOTE_BRANCH" ]; then
echo " 远程分支: $REMOTE_BRANCH"
fi
echo ""
echo " ${BLUE}即将推送的提交:${NC}"
git log --oneline @{u}..HEAD 2>/dev/null || git log --oneline -3
# ============================================
# 所有检查通过
# ============================================
echo ""
echo "✅ ${GREEN}所有检查通过!${NC}"
echo "🚀 ${BLUE}开始推送...${NC}"
echo ""