/git-sync - Fetch and Show Remote Changes
Fetch the latest changes from remote without modifying your local branch. Shows what's new upstream.
Usage
/git-sync # Fetch all remotes and show status
/git-sync origin # Fetch specific remote
/git-sync --all # Fetch all remotes including tags
Workflow
Step 1: Fetch Remote Changes
# Fetch from all remotes with prune
git fetch --all --prune
Step 2: Show Current Status
# Get current branch
git branch --show-current
# Check remote tracking status
git status -sb
Step 3: Show Commits Ahead/Behind
# Get the remote tracking branch
REMOTE_BRANCH=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null)
# If tracking branch exists, show difference
if [ -n "$REMOTE_BRANCH" ]; then
# Commits behind (on remote but not local)
git log --oneline HEAD..$REMOTE_BRANCH
# Commits ahead (on local but not remote)
git log --oneline $REMOTE_BRANCH..HEAD
fi
Step 4: Show Changed Files Preview
# Files that would change on pull
git diff --stat HEAD..@{u} 2>/dev/null
Output Format
Fetched from origin, upstream
Current branch: feat/dark-mode
Tracking: origin/feat/dark-mode
Behind by 3 commits:
abc1234 Fix theme persistence
def5678 Update color palette
ghi9012 Add system theme detection
Ahead by 1 commit:
xyz7890 WIP: toggle component
Files that would change on pull:
src/theme/colors.ts | 12 ++++++------
src/hooks/useTheme.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++
Next steps:
/git-pull # Pull the changes
/git-stash # Stash local changes first
Edge Cases
No Remote Tracking Branch
Branch 'feat/local-only' has no upstream tracking branch.
To set tracking:
git branch --set-upstream-to=origin/feat/local-only
Or push with tracking:
git push -u origin feat/local-only
Already Up To Date
Current branch: main
Tracking: origin/main
Already up to date.
Network Error
Failed to fetch from origin: Could not resolve host: github.com
Check your network connection and try again.
Integration
- Run
/git-pullto apply the fetched changes - Run
/git-stashif you have uncommitted changes to save first - Run
/git-branchesto see status of all branches