git-workflow

安装量: 10.8K
排名: #205

安装

npx skills add https://github.com/supercent-io/skills-template --skill git-workflow

Git Workflow When to use this skill Creating meaningful commit messages Managing branches Merging code Resolving conflicts Collaborating with team Git best practices Instructions Step 1: Branch management Create feature branch :

Create and switch to new branch

git checkout -b feature/feature-name

Or create from specific commit

git
checkout
-b
feature/feature-name
<
commit-hash
>
Naming conventions
:
feature/description
New features
bugfix/description
Bug fixes
hotfix/description
Urgent fixes
refactor/description
Code refactoring
docs/description
Documentation updates Step 2: Making changes Stage changes :

Stage specific files

git add file1.py file2.js

Stage all changes

git add .

Stage with patch mode (interactive)

git add -p Check status :

See what's changed

git status

See detailed diff

git diff

See staged diff

git
diff
--staged
Step 3: Committing
Write good commit messages
:
git
commit
-m
"type(scope): subject
Detailed description of what changed and why.
- Change 1
- Change 2
Fixes #123"
Commit types
:
feat
New feature
fix
Bug fix
docs
Documentation
style
Formatting, no code change
refactor
Code refactoring
test
Adding tests
chore
Maintenance Example : git commit -m "feat(auth): add JWT authentication - Implement JWT token generation - Add token validation middleware - Update user model with refresh token Closes #42" Step 4: Pushing changes

Push to remote

git push origin feature/feature-name

Force push (use with caution!)

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

Set upstream and push

git push -u origin feature/feature-name Step 5: Pulling and updating

Pull latest changes

git pull origin main

Pull with rebase (cleaner history)

git pull --rebase origin main

Fetch without merging

git fetch origin Step 6: Merging Merge feature branch :

Switch to main branch

git checkout main

Merge feature

git merge feature/feature-name

Merge with no fast-forward (creates merge commit)

git merge --no-ff feature/feature-name Rebase instead of merge :

On feature branch

git checkout feature/feature-name

Rebase onto main

git rebase main

Continue after resolving conflicts

git rebase --continue

Abort rebase

git rebase --abort Step 7: Resolving conflicts When conflicts occur :

See conflicted files

git status

Open files and resolve conflicts

Look for markers:

<<< <<< < HEAD Current branch code == == == = Incoming branch code

feature-branch

After resolving

git add < resolved-files

git commit

For merge

git rebase --continue

For rebase

Step 8: Cleaning up

Delete local branch

git branch -d feature/feature-name

Force delete

git branch -D feature/feature-name

Delete remote branch

git push origin --delete feature/feature-name

Clean up stale references

git fetch --prune Advanced workflows Interactive rebase

Rebase last 3 commits

git rebase -i HEAD~3

Commands in editor:

pick: use commit

reword: change commit message

edit: amend commit

squash: combine with previous

fixup: like squash, discard message

drop: remove commit

Stashing changes

Stash current changes

git stash

Stash with message

git stash save "Work in progress on feature X"

List stashes

git stash list

Apply most recent stash

git stash apply

Apply and remove stash

git stash pop

Apply specific stash

git stash apply stash@ { 2 }

Drop stash

git stash drop stash@ { 0 }

Clear all stashes

git stash clear Cherry-picking

Apply specific commit

git cherry-pick < commit-hash

Cherry-pick multiple commits

git cherry-pick < hash 1

< hash 2

< hash 3

Cherry-pick without committing

git cherry-pick -n < commit-hash

Bisect (finding bugs)

Start bisect

git bisect start

Mark current as bad

git bisect bad

Mark known good commit

git bisect good < commit-hash

Git will checkout commits to test

Test and mark each:

git bisect good

if works

git bisect bad

if broken

When found, reset

git bisect reset Examples Example 1: Feature development workflow

1. Create feature branch

git checkout main git pull origin main git checkout -b feature/user-profile

2. Make changes

... edit files ...

3. Commit changes

git add src/profile/ git commit -m "feat(profile): add user profile page - Create profile component - Add profile API endpoints - Add profile tests"

4. Keep up to date with main

git fetch origin git rebase origin/main

5. Push to remote

git push origin feature/user-profile

6. Create Pull Request on GitHub/GitLab

... after review and approval ...

7. Merge and cleanup

git checkout main git pull origin main git branch -d feature/user-profile Example 2: Hotfix workflow

1. Create hotfix branch from production

git checkout main git pull origin main git checkout -b hotfix/critical-bug

2. Fix the bug

... make fixes ...

3. Commit

git add . git commit -m "hotfix: fix critical login bug Fixes authentication bypass vulnerability Fixes #999"

4. Push and merge immediately

git push origin hotfix/critical-bug

After merge:

5. Cleanup

git checkout main git pull origin main git branch -d hotfix/critical-bug Example 3: Collaborative workflow

1. Update main branch

git checkout main git pull origin main

2. Create feature branch

git checkout -b feature/new-feature

3. Regular updates from main

git fetch origin git rebase origin/main

4. Push your work

git push origin feature/new-feature

5. If teammate made changes to your branch

git pull origin feature/new-feature --rebase

6. Resolve any conflicts

... resolve conflicts ...

git add . git rebase --continue

7. Force push after rebase

git
push origin feature/new-feature --force-with-lease
Best practices
Commit often
Small, focused commits
Meaningful messages
Explain what and why
Pull before push
Stay updated
Review before commit
Check what you're committing
Use branches
Never commit directly to main
Keep history clean
Rebase feature branches
Test before push
Run tests locally
Write descriptive branch names
Easy to understand
Delete merged branches
Keep repository clean
Use .gitignore
Don't commit generated files Common patterns Undo last commit (keep changes) git reset --soft HEAD~1 Undo last commit (discard changes) git reset --hard HEAD~1 Amend last commit

Change commit message

git commit --amend -m "New message"

Add files to last commit

git add forgotten-file.txt git commit --amend --no-edit View history

Detailed log

git log

One line per commit

git log --oneline

With graph

git log --oneline --graph --all

Last 5 commits

git log -5

Commits by author

git log --author = "John"

Commits in date range

git log --since = "2 weeks ago" Find commits

Search commit messages

git log --grep = "keyword"

Search code changes

git log -S "function_name"

Show file history

git log --follow -- path/to/file Troubleshooting Accidentally committed to wrong branch

1. Create correct branch from current state

git branch feature/correct-branch

2. Reset current branch

git reset --hard HEAD~1

3. Switch to correct branch

git checkout feature/correct-branch Need to undo a merge

If not pushed yet

git reset --hard HEAD~1

If already pushed (creates revert commit)

git revert -m 1 < merge-commit-hash

Recover deleted branch

Find lost commit

git reflog

Create branch from lost commit

git checkout -b recovered-branch < commit-hash

Sync fork with upstream

Add upstream remote

git remote add upstream https://github.com/original/repo.git

Fetch upstream

git fetch upstream

Merge upstream main

git checkout main git merge upstream/main

Push to your fork

git push origin main Git configuration User setup git config --global user.name "Your Name" git config --global user.email "your.email@example.com" Aliases git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status git config --global alias.unstage 'reset HEAD --' git config --global alias.last 'log -1 HEAD' git config --global alias.lg 'log --oneline --graph --all' Editor git config --global core.editor "code --wait"

VS Code

git config --global core.editor "vim"

Vim

References Pro Git Book Git Cheat Sheet Conventional Commits Git Flow GitHub Flow

返回排行榜