| name | git-pull |
| description | Use when pulling remote changes with an explicit merge or rebase strategy choice. |
| triggers | ["git pull","get latest","pull changes","update branch"] |
| version | 1.0.0 |
| user_invocable | true |
Scope Constraints
- Write operation — fetches from remote and integrates changes into the current local branch
- May create merge commits or rebase local commits depending on strategy
- Does not push to remote — use push skill for that
- Does not resolve conflicts — use conflicts skill if pull produces conflicts
Input Sanitization
- Strategy flags: only
--rebase, --merge, --ff-only accepted. Reject arbitrary strings or shell metacharacters.
/git-pull - Pull Remote Changes
Pull changes from remote with configurable strategy (merge or rebase).
Usage
/git-pull
/git-pull --rebase
/git-pull --merge
/git-pull --ff-only
Workflow
Step 1: Pre-flight Checks
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "You have uncommitted changes. Options:"
echo " 1. /git-stash - Stash changes and continue"
echo " 2. /commit - Commit changes first"
echo " 3. Discard changes: git checkout ."
exit 1
fi
if ! git rev-parse --abbrev-ref --symbolic-full-name @{u} >/dev/null 2>&1; then
echo "No upstream tracking branch configured."
echo "Set with: git branch --set-upstream-to=origin/$(git branch --show-current)"
exit 1
fi
Step 2: Fetch Latest
git fetch --prune
Step 3: Check Pull Status
BEHIND=$(git rev-list --count HEAD..@{u})
AHEAD=$(git rev-list --count @{u}..HEAD)
echo "Local is $BEHIND commits behind, $AHEAD commits ahead"
Step 4: Execute Pull
Based on strategy requested:
git pull
git pull --rebase
git pull --no-rebase
git pull --ff-only
Step 5: Report Result
Show what was pulled and any issues.
Output Format
Successful Pull
Pulling from origin/main...
Pulled 3 commits:
abc1234 Fix authentication bug
def5678 Update dependencies
ghi9012 Improve error handling
Files updated:
src/auth/login.ts
package.json
package-lock.json
Branch is now up to date with origin/main.
Fast-Forward Not Possible
Cannot fast-forward: local and remote have diverged.
Local has 2 commits not on remote:
xyz7890 Add new feature
uvw1234 Fix typo
Remote has 3 commits not local:
abc1234 Other work
def5678 More changes
ghi9012 Latest commit
Options:
/git-pull --rebase # Rebase your commits on top
/git-pull --merge # Create a merge commit
/git-merge-main # Merge main into your branch
Conflicts Detected
Pull resulted in conflicts!
Conflicting files:
- src/components/Header.tsx
- src/styles/theme.css
Next steps:
/git-conflicts # Get help resolving conflicts
git merge --abort # Or abort and try a different approach
Strategy Selection
| Scenario | Recommended Strategy |
|---|
| Feature branch, no shared commits | --rebase (cleaner history) |
| Shared branch, collaborating | --merge (preserve history) |
| Main branch, simple update | --ff-only (safest) |
| Unsure | Default (uses git config) |
Integration
- Use
/git-sync first to preview changes before pulling
- Use
/git-stash to save uncommitted work before pulling
- Use
/git-conflicts if pull results in conflicts
- Use
/git-abort to cancel a failed merge/rebase