git-advanced-workflows

安装量: 36
排名: #19511

安装

npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill git-advanced-workflows
Git Advanced Workflows
Master advanced Git techniques to maintain clean history, collaborate effectively, and recover from any situation with confidence.
Do not use this skill when
The task is unrelated to git advanced workflows
You need a different domain or tool outside this scope
Instructions
Clarify goals, constraints, and required inputs.
Apply relevant best practices and validate outcomes.
Provide actionable steps and verification.
If detailed examples are required, open
resources/implementation-playbook.md
.
Use this skill when
Cleaning up commit history before merging
Applying specific commits across branches
Finding commits that introduced bugs
Working on multiple features simultaneously
Recovering from Git mistakes or lost commits
Managing complex branch workflows
Preparing clean PRs for review
Synchronizing diverged branches
Core Concepts
1. Interactive Rebase
Interactive rebase is the Swiss Army knife of Git history editing.
Common Operations:
pick
Keep commit as-is
reword
Change commit message
edit
Amend commit content
squash
Combine with previous commit
fixup
Like squash but discard message
drop
Remove commit entirely Basic Usage:

Rebase last 5 commits

git rebase -i HEAD~5

Rebase all commits on current branch

git rebase -i $( git merge-base HEAD main )

Rebase onto specific commit

git rebase -i abc123 2. Cherry-Picking Apply specific commits from one branch to another without merging entire branches.

Cherry-pick single commit

git cherry-pick abc123

Cherry-pick range of commits (exclusive start)

git cherry-pick abc123 .. def456

Cherry-pick without committing (stage changes only)

git cherry-pick -n abc123

Cherry-pick and edit commit message

git cherry-pick -e abc123 3. Git Bisect Binary search through commit history to find the commit that introduced a bug.

Start bisect

git bisect start

Mark current commit as bad

git bisect bad

Mark known good commit

git bisect good v1.0.0

Git will checkout middle commit - test it

Then mark as good or bad

git bisect good

or: git bisect bad

Continue until bug found

When done

git bisect reset Automated Bisect:

Use script to test automatically

git bisect start HEAD v1.0.0 git bisect run ./test.sh

test.sh should exit 0 for good, 1-127 (except 125) for bad

  1. Worktrees Work on multiple branches simultaneously without stashing or switching.

List existing worktrees

git worktree list

Add new worktree for feature branch

git worktree add .. /project-feature feature/new-feature

Add worktree and create new branch

git worktree add -b bugfix/urgent .. /project-hotfix main

Remove worktree

git worktree remove .. /project-feature

Prune stale worktrees

git worktree prune 5. Reflog Your safety net - tracks all ref movements, even deleted commits.

View reflog

git reflog

View reflog for specific branch

git reflog show feature/branch

Restore deleted commit

git reflog

Find commit hash

git checkout abc123 git branch recovered-branch

Restore deleted branch

git reflog git branch deleted-branch abc123 Practical Workflows Workflow 1: Clean Up Feature Branch Before PR

Start with feature branch

git checkout feature/user-auth

Interactive rebase to clean history

git rebase -i main

Example rebase operations:

- Squash "fix typo" commits

- Reword commit messages for clarity

- Reorder commits logically

- Drop unnecessary commits

Force push cleaned branch (safe if no one else is using it)

git push --force-with-lease origin feature/user-auth Workflow 2: Apply Hotfix to Multiple Releases

Create fix on main

git checkout main git commit -m "fix: critical security patch"

Apply to release branches

git checkout release/2.0 git cherry-pick abc123 git checkout release/1.9 git cherry-pick abc123

Handle conflicts if they arise

git cherry-pick --continue

or

git cherry-pick --abort Workflow 3: Find Bug Introduction

Start bisect

git bisect start git bisect bad HEAD git bisect good v2.1.0

Git checks out middle commit - run tests

npm test

If tests fail

git bisect bad

If tests pass

git bisect good

Git will automatically checkout next commit to test

Repeat until bug found

Automated version

git bisect start HEAD v2.1.0 git bisect run npm test Workflow 4: Multi-Branch Development

Main project directory

cd ~/projects/myapp

Create worktree for urgent bugfix

git worktree add .. /myapp-hotfix hotfix/critical-bug

Work on hotfix in separate directory

cd .. /myapp-hotfix

Make changes, commit

git commit -m "fix: resolve critical bug" git push origin hotfix/critical-bug

Return to main work without interruption

cd ~/projects/myapp git fetch origin git cherry-pick hotfix/critical-bug

Clean up when done

git worktree remove .. /myapp-hotfix Workflow 5: Recover from Mistakes

Accidentally reset to wrong commit

git reset --hard HEAD~5

Oh no!

Use reflog to find lost commits

git reflog

Output shows:

abc123 HEAD@{0}: reset: moving to HEAD~5

def456 HEAD@{1}: commit: my important changes

Recover lost commits

git reset --hard def456

Or create branch from lost commit

git branch recovery def456 Advanced Techniques Rebase vs Merge Strategy When to Rebase: Cleaning up local commits before pushing Keeping feature branch up-to-date with main Creating linear history for easier review When to Merge: Integrating completed features into main Preserving exact history of collaboration Public branches used by others

Update feature branch with main changes (rebase)

git checkout feature/my-feature git fetch origin git rebase origin/main

Handle conflicts

git status

Fix conflicts in files

git add . git rebase --continue

Or merge instead

git merge origin/main Autosquash Workflow Automatically squash fixup commits during rebase.

Make initial commit

git commit -m "feat: add user authentication"

Later, fix something in that commit

Stage changes

git commit --fixup HEAD

or specify commit hash

Make more changes

git commit --fixup abc123

Rebase with autosquash

git rebase -i --autosquash main

Git automatically marks fixup commits

Split Commit Break one commit into multiple logical commits.

Start interactive rebase

git rebase -i HEAD~3

Mark commit to split with 'edit'

Git will stop at that commit

Reset commit but keep changes

git reset HEAD^

Stage and commit in logical chunks

git add file1.py git commit -m "feat: add validation" git add file2.py git commit -m "feat: add error handling"

Continue rebase

git rebase --continue Partial Cherry-Pick Cherry-pick only specific files from a commit.

Show files in commit

git show --name-only abc123

Checkout specific files from commit

git checkout abc123 -- path/to/file1.py path/to/file2.py

Stage and commit

git
commit
-m
"cherry-pick: apply specific changes from abc123"
Best Practices
Always Use --force-with-lease
Safer than --force, prevents overwriting others' work
Rebase Only Local Commits
Don't rebase commits that have been pushed and shared
Descriptive Commit Messages
Future you will thank present you
Atomic Commits
Each commit should be a single logical change
Test Before Force Push
Ensure history rewrite didn't break anything
Keep Reflog Aware
Remember reflog is your safety net for 90 days
Branch Before Risky Operations
Create backup branch before complex rebases

Safe force push

git push --force-with-lease origin feature/branch

Create backup before risky operation

git branch backup-branch git rebase -i main

If something goes wrong

git
reset
--hard
backup-branch
Common Pitfalls
Rebasing Public Branches
Causes history conflicts for collaborators
Force Pushing Without Lease
Can overwrite teammate's work
Losing Work in Rebase
Resolve conflicts carefully, test after rebase
Forgetting Worktree Cleanup
Orphaned worktrees consume disk space
Not Backing Up Before Experiment
Always create safety branch
Bisect on Dirty Working Directory
Commit or stash before bisecting Recovery Commands

Abort operations in progress

git rebase --abort git merge --abort git cherry-pick --abort git bisect reset

Restore file to version from specific commit

git restore --source = abc123 path/to/file

Undo last commit but keep changes

git reset --soft HEAD^

Undo last commit and discard changes

git reset --hard HEAD^

Recover deleted branch (within 90 days)

git
reflog
git
branch recovered-branch abc123
Resources
references/git-rebase-guide.md
Deep dive into interactive rebase
references/git-conflict-resolution.md
Advanced conflict resolution strategies
references/git-history-rewriting.md
Safely rewriting Git history
assets/git-workflow-checklist.md
Pre-PR cleanup checklist
assets/git-aliases.md
Useful Git aliases for advanced workflows
scripts/git-clean-branches.sh
Clean up merged and stale branches
返回排行榜