Git Commands Quick Reference

1. Create

From existing data
When starting a new project locally:

cd ~/my_project_directory
# Navigate to your project folder
git init
# Initialize an empty git repository
git add .
# Add all files to staging

From an existing repository
When collaborating on an existing project:

git clone /existing_repo ~/new/repo
git clone git://host.org/project.git
git clone ssh://user@host.org/project.git

2. Show

# Files changed in working directory: Shows modified, added, or deleted files.
git status

#Changes made to tracked files: See what lines of code have changed before staging or committing.
git diff

#Compare two commits:
git diff <ID1> <ID2>

# View commit history: Check who made changes and when.
git log

# Inspect a specific commit:
git show <ID>

# List local branches:
git branch

# Tip: Use git diff for unstaged changes. Use git log and git show for understanding history and tracking changes.

3. Revert

# Return to the last committed state (WARNING: irreversible):
git reset --hard

# Undo the last commit without losing changes: Creates a new commit that undoes the last commit.
git revert HEAD

# Modify the last commit message or add forgotten changes:
git commit --amend

# Get back a previous version of a file:
git checkout <ID> <FILE>

Difference between git reset --hard and git revert HEAD:

  • git reset --hard permanently discards changes (use with caution).

  • git revert HEAD safely undoes a commit by adding a new one (preferred in collaborative settings).

4. Update

# Fetch latest changes from the remote (without merging): Updates local metadata but doesn't affect your working files.

git fetch 
e.g git fetch origin

# Fetch and merge changes in one step:
git pull
e.g git pull origin main

# Apply a patch file:
git am -3 patch.mbox

# Mark conflicts resolved in patch application:
git am --resolved

Difference between git fetch and git pull:

  • git fetch just downloads the latest changes (use when you want to review before merging).

  • git pull downloads and merges (use when you trust upstream and want to integrate immediately).

5. Branch

# Switch branches:
git checkout <BRANCH>

# Merge another branch into your current branch:
git merge <BRANCH>

# Create a new branch:
git branch <BRANCH>

# Delete a branch:
git branch -d <BRANCH>

# Tip: Create and switch to a new branch in one step using git checkout -b <BRANCH>.

6. Resolve Merge Conflicts

# View conflicts after merge attempts:
git diff

# Discard the conflicting changes:
git reset --hard
git rebase --skip

# Resolve conflicts and continue the merge:
git add <CONFLICTING_FILE>
git rebase --continue


When to use git reset --hard vs git rebase --skip:

  • git reset --hard will wipe out local changes.

  • git rebase --skip ignores the problematic commit and continues rebasing.


7. Publish

# Commit staged changes:
git commit -a

# Create patches to share changes via email or another system:
git format-patch origin

# Push changes to the remote repository:
git push

# Tag a specific release version:
git tag v1.0

8. Workflow Explained

Step-by-step flow:

  • CREATE: Start by init or clone.

  • BROWSE: Use status, log, show, diff, branch to inspect.

  • CHANGE: Make code edits.

  • REVERT: Use reset, checkout, revert if things go wrong.

  • UPDATE: Integrate changes using pull, fetch, merge, am.

  • BRANCH: Switch or create branches for safe experimentation.

  • COMMIT: Save changes with commit.

  • PUBLISH: Share with the world using push and format-patch.

Search

Table of Contents

You may also like to read

AI Driven Test & Automation

Selenium