Home

Byphunsanit

GIT: find branch in all sub folder

ตัวนี้เป็น shell script ไว้ branch ใน sub folder เพราะว่า Workspace เดียวกันมีแบ่ง folder ย่อย ๆ จะมาหาว่า jira รหัสนี้มันอยู่ที่ไหนบ้างก็เสียเวลาไล่ ../, cd ไป ๆ มา ๆ เลยทำตัวค้นหาให้มัน search ให้ไปเลยจะได้จบ ๆ

  1. ไปที่ Workspace ที่เก็บ git folder ไว้ เช่น
    cd /Users/Shared/Gits/phunsanit
  2. สร้างไฟล์
    touch git-find_branch-all.sh
  3. ให้สิทธิ์
    chmod +x git-find_branch-all.sh
  4. เปิดไฟล์มาแก้
    nano git-find_branch-all.sh
  5. แล้วใส่เนื้อหาตามตัวอย่าง
#!/bin/bash

# รับค่า Keyword จาก Argument
SEARCH_TERM=$1

if [ -z "$SEARCH_TERM" ]; then
    echo "Usage: $0 <branch_keyword>"
    exit 1
fi

echo "Searching for branches containing: '$SEARCH_TERM'"

for dir in */; do
    # ตรวจสอบว่าเป็น Git Repo หรือไม่
    if [ -d "$dir/.git" ]; then
        echo "------------------------------------------"
        echo "Folder: $dir"

        (
            cd "$dir" || exit

            # อัปเดตข้อมูลจาก remote
            git fetch --all --prune > /dev/null 2>&1

            # ค้นหาทั้ง Local และ Remote (-a) และไม่สนตัวพิมพ์เล็กใหญ่ (grep -i)
            MATCHES=$(git branch -a | grep -i "$SEARCH_TERM" | sed 's/^[[:space:]]*//')

            if [ -z "$MATCHES" ]; then
                echo "Result: Not found."
            else
                echo "Found:"
                # แสดงผลแบบสีเขียวเพื่อให้สังเกตง่าย
                echo -e "\033[0;32m$MATCHES\033[0m"
            fi
        )
    fi
done

echo "------------------------------------------"
echo "Search complete."

ใช้โดยการเรียก ชื่อไฟล์ ตามด้วยคำที่ต้องการค้นหา เช่น
./git-find_branch-all.sh pitt

อ่านเพิ่มเติม