- Windows Cmd, Poweshell, bash file to fetch all branches in a git branch.
 
fetch.cmd
:: fetch.cmd
::
:: This script deletes and re-clones specific Git repositories, 
:: and runs git commands (like git pull) inside each one after cloning.
@echo off
:: TODO: Set Git repository name and URL.
set GIT_REPO_NAME=QPing
set GIT_REPO=https://github.com/JayTwoLab/QPing.git
:: Remove old directory 
if exist %GIT_REPO_NAME% (
	rmdir /s /q %GIT_REPO_NAME%
)	
git clone %GIT_REPO% 
cd %GIT_REPO_NAME%
setlocal enabledelayedexpansion
:: Fetch all remote branches
git fetch --all
:: Exclude origin/HEAD and origin/master from the list
for /f "tokens=*" %%b in ('git branch -r ^| findstr /V "HEAD" ^| findstr /V "origin/master"') do (
    :: Get the full remote branch name (e.g., origin/feature-x)
    set "full_branch=%%b"
    :: Remove 'origin/' prefix
    set "branch_name=%%b"
    set "branch_name=!branch_name:origin/=!"
    echo.
    echo [Checkout and pull] %%b → !branch_name!
    :: Checkout to local branch tracking the remote branch
    git checkout -B !branch_name! %%b
    :: Pull latest changes for the branch
    git pull origin !branch_name!
)
endlocal
:: Checkout master branch
git checkout master
git pull
git status
:: Move to parent directory  
cd
cd ..
cd fetch.ps1
# fetchAll.ps1
# This script clones a list of Git repositories after deleting existing folders if they exist,
# and then runs 'git pull' inside each cloned repository to ensure it's up to date.
# Save current working directory
$WORKDIR = Get-Location
# TODO: Set Git repository name and URL.
$GIT_NAME = "QPing"
$GIT_REPO = "https://github.com/JayTwoLab/QPing.git"
if (Test-Path $GIT_NAME) {
	Remove-Item -Recurse -Force $GIT_NAME
}
git clone $GIT_REPO
cd $GIT_NAME
git fetch --all
# Get list of remote branches, excluding HEAD and origin/master
$branches = git branch -r | Where-Object { $_ -notmatch 'HEAD' -and $_ -notmatch 'origin/master' }
foreach ($line in $branches) {
    $full_branch = $line.Trim()                            # Remove leading/trailing spaces
    $branch_name = $full_branch -replace '^origin/', ''    # Remove 'origin/' prefix
    Write-Host ""
    Write-Host "[Checkout and pull] $full_branch → $branch_name"
    git checkout -B $branch_name $full_branch              # Create or reset local branch
    git pull origin $branch_name                           # Pull latest changes from origin
}
git checkout master
git pull
cd ..fetchAll.sh
#!/bin/bash
# Save the current working directory
WORKDIR=$(pwd)
# TODO: Set Git repository name and URL.
GIT_NAME="QPing"
GIT_REPO="https://github.com/JayTwoLab/QPing.git"
# Remove the existing directory if it exists
if [ -d "$GIT_NAME" ]; then
    rm -rf "$GIT_NAME"
fi
# Clone the Git repository
git clone "$GIT_REPO"
cd "$GIT_NAME" || exit 1
# Fetch all remote branches
git fetch --all
# Get list of remote branches excluding HEAD and origin/master
branches=$(git branch -r | grep -v "HEAD" | grep -v "origin/master")
# For each branch, check it out and pull the latest changes
while read -r full_branch; do
    full_branch=$(echo "$full_branch" | xargs)             # Trim whitespace
    branch_name=${full_branch#origin/}                     # Remove 'origin/' prefix
    echo ""
    echo "[Checkout and pull] $full_branch → $branch_name"
    git checkout -B "$branch_name" "$full_branch"
    git pull origin "$branch_name"
done <<< "$branches"
# Switch back to master branch and pull
git checkout master
git pull
# Return to the original working directory
cd "$WORKDIR" || exit 1