Best Practices15 min read

Git Commands Every Developer Should Know for Faster Workflow

Alex Rivera
Alex Rivera
Senior DevOps Engineer
Git Commands Every Developer Should Know for Faster Workflow

Master the essential Git commands and workflows that will dramatically improve your development speed. Whether you're working solo or in a team, these Git techniques will help you manage code more efficiently.

1. Essential Git Commands

Developer using Git commands in terminal

Master these fundamental Git commands to build a solid foundation for efficient version control. These commands form the core of daily Git operations.

Repository Setup

# Initialize a new repository
git init

# Clone existing repository
git clone 

# Add remote repository
git remote add origin 

# Check repository status
git status
              

Basic Operations

# Stage changes
git add 
git add .  # Stage all changes

# Commit changes
git commit -m "descriptive message"

# Push changes
git push origin 

# Pull updates
git pull origin 
              

Command Tips

Best Practices
  • Use meaningful commit messages
  • Commit related changes together
  • Commit early and often
Common Mistakes
  • Committing without checking status
  • Pushing without pulling first
  • Using vague commit messages

2. Branch Management

Git branching visualization

Effective branch management is crucial for maintaining a clean and organized codebase. Learn how to create, switch, and manage branches efficiently for better workflow.

Branch Operations

# Create and switch to new branch
git checkout -b feature/new-feature

# Switch to existing branch
git checkout main

# List all branches
git branch --all

# Delete branch
git branch -d feature/old-feature

# Force delete unmerged branch
git branch -D feature/abandoned
              

Remote Branches

# Push branch to remote
git push -u origin feature/new-feature

# Track remote branch
git branch --track feature/remote origin/feature/remote

# Update remote branches
git fetch origin

# Delete remote branch
git push origin --delete feature/old-feature
              

Branch Naming Conventions

Common Prefixes

  • feature/ New features or enhancements
  • bugfix/ Bug fixes and patches
  • hotfix/ Urgent production fixes
  • release/ Release preparation

Naming Examples

  • feature/user-authentication
  • bugfix/login-validation
  • new-stuff
  • fix123

Branch Management Tips

Best Practices
  • Keep branches focused and short-lived
  • Regularly sync with main branch
  • Delete merged branches promptly
When to Branch
  • New features or improvements
  • Bug fixes and patches
  • Experimental changes

3. Merge vs Rebase

Git merge and rebase workflow visualization

Understanding the difference between merge and rebase is crucial for maintaining a clean Git history. Learn when to use each approach for better collaboration and code management.

Merge Workflow

# Merge main into feature branch
git checkout feature/new-feature
git merge main

# Create a merge commit
git merge --no-ff feature/new-feature

# Abort a merge with conflicts
git merge --abort
                

When to Merge

  • Preserving feature branch history
  • Collaborating on shared branches
  • Maintaining topic branches

Rebase Workflow

# Rebase feature branch onto main
git checkout feature/new-feature
git rebase main

# Interactive rebase for cleanup
git rebase -i HEAD~3

# Continue after resolving conflicts
git rebase --continue

# Abort rebase operation
git rebase --abort
                

When to Rebase

  • Cleaning up local changes
  • Maintaining linear history
  • Working on personal branches

Comparison Overview

Merge

  • Preserves complete history
  • Non-destructive operation
  • Can create complex history
  • More merge commits

Rebase

  • Creates linear history
  • Cleaner project history
  • Rewrites commit history
  • Can be complex to resolve conflicts

Golden Rules

Never rebase shared branches: Only rebase branches that you haven't pushed or that no one else is working on.

Merge for collaboration: Use merge when working on shared feature branches or with multiple contributors.

Rebase for cleanup: Use rebase to clean up your local work before merging into the main branch.

4. Conflict Resolution

Developer resolving Git conflicts

Dealing with merge conflicts effectively is essential for smooth collaboration. Learn how to resolve conflicts confidently and maintain code integrity.

Understanding Conflicts

<<<<<<< HEAD
function greeting() {
  return 'Hello World';
}
=======
function greeting() {
  return 'Hi there!';
}
>>>>>>> feature/new-greeting

# Conflict markers explained:
# <<<<<<< HEAD - Current changes
# ======= - Divider
# >>>>>>> branch-name - Incoming changes
              

Resolution Commands

# Check files with conflicts
git status

# After resolving conflicts
git add 
git commit -m "Resolve merge conflicts"

# Use visual tool for conflicts
git mergetool

# Abort merge if needed
git merge --abort
              

Resolution Strategies

Manual Resolution

  • 1. Open conflicted files
  • 2. Identify conflict markers
  • 3. Choose or combine changes
  • 4. Remove conflict markers
  • 5. Test the resolution

Using Tools

  • VS Code Git integration
  • GitKraken
  • Meld
  • Beyond Compare

Conflict Prevention Tips

Before Merging
  • Pull latest changes frequently
  • Communicate with team members
  • Keep branches short-lived
Best Practices
  • Understand both changes
  • Test after resolution
  • Document significant resolutions

5. Git Aliases for Speed

Fast command line operations with Git aliases

Git aliases can significantly speed up your workflow by creating shortcuts for frequently used commands. Learn how to set up and use aliases effectively.

Setting Up Aliases

# Add alias to Git config
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

# Create complex alias
git config --global alias.lg "log --graph --oneline --decorate"
              

Common Aliases

# Usage examples
git st              # git status
git co feature      # git checkout feature
git br -a           # git branch --all
git ci -m "msg"     # git commit -m "msg"
git lg              # Pretty log view
              

Recommended Aliases

Basic Operations

[alias]
    aa = add --all
    cm = commit -m
    ps = push
    pl = pull
    ft = fetch --all
    rb = rebase
    cp = cherry-pick
              

Advanced Operations

[alias]
    unstage = reset HEAD --
    last = log -1 HEAD
    visual = !gitk
    uncommit = reset --soft HEAD^
    amend = commit --amend
              

Productivity Tips

Creating Aliases
  • Keep aliases short but meaningful
  • Use consistent naming patterns
  • Document complex aliases
Shell Integration
  • Combine with shell aliases
  • Create custom scripts
  • Use tab completion

6. Advanced Git Features

Advanced Git operations visualization

Master these advanced Git features to handle complex scenarios and improve your workflow efficiency. These powerful tools can help you manage code history and collaborate more effectively.

Interactive Rebase

# Start interactive rebase
git rebase -i HEAD~3

# Available commands:
# pick   - keep commit
# reword - change message
# edit   - amend commit
# squash - combine with previous
# drop   - remove commit

# Example usage
pick abc123 Add authentication
squash def456 Fix auth tests
squash ghi789 Update auth docs
              

Cherry Picking

# Cherry pick a commit
git cherry-pick commit-hash

# Pick multiple commits
git cherry-pick commit1..commit3

# Cherry pick without committing
git cherry-pick -n commit-hash

# Resolve conflicts if needed
git cherry-pick --continue
git cherry-pick --abort
              

Advanced Operations

Bisect

# Start bisect
git bisect start

# Mark current state
git bisect bad

# Mark known good commit
git bisect good commit-hash

# Git will help find the problematic commit
# Mark each state until found
git bisect good/bad

# End bisect
git bisect reset
              

Reflog

# View reflog
git reflog

# Restore to previous state
git reset --hard HEAD@{1}

# Recover deleted branch
git checkout -b recover-branch HEAD@{2}

# Find lost commits
git log --walk-reflogs
              

Advanced Tips

When to Use
  • Cleaning up commit history
  • Finding bugs with bisect
  • Recovering lost work
Safety Tips
  • Always work on feature branches
  • Backup before major changes
  • Test after history modifications

7. GUI Tools vs CLI

Git GUI tools and command line interface comparison

Understanding when to use GUI tools versus the command line interface can significantly impact your productivity. Each approach has its strengths for different scenarios.

Command Line Interface

Advantages

  • Full access to Git features
  • Faster for experienced users
  • Scriptable and automatable
  • Works over SSH connections

Best For

  • Advanced operations
  • Server management
  • Automation tasks

GUI Tools

Advantages

  • Visual history browsing
  • Easier conflict resolution
  • Better for beginners
  • Visual diff tools

Best For

  • History visualization
  • Complex merges
  • File comparison

Popular GUI Tools

GitKraken

  • Cross-platform
  • Visual branching
  • Built-in merge tool

Sourcetree

  • Free for Mac/Windows
  • Git-flow support
  • Advanced features

GitHub Desktop

  • Simple interface
  • GitHub integration
  • Beginner-friendly

Choosing the Right Approach

Hybrid Approach: Use both CLI and GUI tools based on the task at hand. CLI for quick operations and automation, GUI for visual tasks and complex merges.

Learning Path: Start with GUI tools to understand Git concepts, then gradually learn CLI commands for more control and efficiency.

Conclusion

Mastering Git commands and workflows is essential for modern software development. By understanding these fundamental and advanced Git techniques, you'll be able to manage your code more efficiently and collaborate more effectively with your team.

Remember that becoming proficient with Git is a journey. Start with the basics, gradually incorporate advanced features, and choose the right tools for your specific needs. Whether you prefer CLI or GUI tools, the most important thing is establishing a consistent and efficient workflow.

Next Steps:

  1. Set up your Git environment with essential aliases
  2. Practice branching and merging strategies
  3. Learn advanced features like interactive rebase
  4. Establish team collaboration guidelines
  5. Choose and configure your preferred Git tools