/git-abort - Abort In-Progress Operations
Safely abort a failed or unwanted merge, rebase, cherry-pick, or revert operation.
Usage
bash
/git-abort # Auto-detect and abort current operation /git-abort merge # Explicitly abort merge /git-abort rebase # Explicitly abort rebase /git-abort cherry-pick # Abort cherry-pick /git-abort revert # Abort revert
Workflow
Step 1: Detect In-Progress Operation
bash
# Check for various in-progress states
if [ -d .git/rebase-merge ] || [ -d .git/rebase-apply ]; then
OPERATION="rebase"
elif [ -f .git/MERGE_HEAD ]; then
OPERATION="merge"
elif [ -f .git/CHERRY_PICK_HEAD ]; then
OPERATION="cherry-pick"
elif [ -f .git/REVERT_HEAD ]; then
OPERATION="revert"
else
echo "No operation in progress to abort."
exit 0
fi
echo "Detected in-progress: $OPERATION"
Step 2: Show Current State
bash
# Show what files are in conflict echo "Current status:" git status --short # Show conflicting files echo "Conflicting files:" git diff --name-only --diff-filter=U
Step 3: Confirm and Abort
bash
case "$OPERATION" in
"merge")
git merge --abort
;;
"rebase")
git rebase --abort
;;
"cherry-pick")
git cherry-pick --abort
;;
"revert")
git revert --abort
;;
esac
Step 4: Verify Clean State
bash
# Confirm we're back to clean state echo "Restored to previous state." git status --short git log --oneline -1
Output Format
Abort Merge
code
Aborting merge... Previous state: Merging main into feat/dark-mode Conflicts in 2 files Merge aborted successfully! Current state: Branch: feat/dark-mode Status: Clean working directory HEAD: abc1234 Your last commit before merge What to do next: /git-merge-main # Try merge again after preparation /git-rebase # Try rebase instead (cleaner history) /git-stash # Stash any partial work
Abort Rebase
code
Aborting rebase... Rebase was in progress: Rebasing feat/dark-mode onto main Stopped at commit def5678 Rebase aborted successfully! Current state: Branch: feat/dark-mode Status: Clean working directory HEAD: ghi9012 (back to before rebase) Your commits are restored to their original state. Alternative approaches: /git-merge-main # Merge instead of rebase /git-conflicts # Get help resolving conflicts next time
Abort Cherry-Pick
code
Aborting cherry-pick... Was cherry-picking: Commit abc1234 from main Cherry-pick aborted! Current state: Branch: feat/dark-mode Status: Clean The cherry-picked commit was not applied.
No Operation to Abort
code
No operation in progress. Current state: Branch: feat/dark-mode Status: Clean working directory Nothing to abort.
What Each Abort Does
| Operation | What Abort Does |
|---|---|
merge --abort | Removes merge state, restores HEAD |
rebase --abort | Stops rebase, restores original branch state |
cherry-pick --abort | Cancels cherry-pick, cleans up |
revert --abort | Cancels revert, cleans up |
When to Abort
Abort if:
- •Conflicts are too complex to resolve now
- •You realize you're merging the wrong branch
- •You want to try a different approach
- •Something doesn't look right
Don't abort if:
- •You've already resolved some conflicts and want to keep them
- •You just need more time (conflicts will wait)
- •You want to save partial work (stash first)
Recovery Tips
After aborting, you can:
- •
Try again with preparation:
bash/git-stash # Save any work /git-sync # Make sure you're up to date /git-merge-main # Try again
- •
Use a different strategy:
bash# If merge had too many conflicts, try rebase /git-rebase # Or vice versa /git-merge-main
- •
Get help with conflicts:
bash/git-conflicts # Guided conflict resolution
Integration
- •Use when
/git-merge-mainor/git-rebaseresults in conflicts - •Use
/git-conflictsto get help before aborting - •After abort, try
/git-stashto save any partial work