Files
ivangdavila_git/commands.md

3.0 KiB

Essential Commands

Getting Started

git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git init
git clone https://github.com/user/repo.git

Daily Workflow

git status
git add file.txt
git add .
git commit -m "feat: add feature"
git commit -am "fix: quick fix"
git push
git pull --rebase

Viewing Changes

git diff                    # unstaged changes
git diff --staged           # staged changes
git log --oneline -10       # recent commits
git log --graph --all       # visual history
git show commit-hash        # specific commit
git blame file.txt          # who changed each line

Staging

git add -p                  # interactive staging (partial files)
git restore --staged file   # unstage
git restore file            # discard changes
git reset                   # unstage all

Stashing

git stash                   # save work temporarily
git stash -m "wip: feature" # with message
git stash list              # see stashes
git stash pop               # apply and remove
git stash apply             # apply and keep
git stash drop              # remove without applying

Tags

git tag                     # list tags
git tag v1.0.0              # lightweight tag
git tag -a v1.0.0 -m "msg"  # annotated tag
git push origin v1.0.0      # push single tag
git push --tags             # push all tags
git tag -d v1.0.0           # delete local
git push origin --delete v1.0.0  # delete remote

Remote Operations

git remote -v               # list remotes
git remote add origin URL   # add remote
git fetch origin            # download without merge
git push -u origin branch   # push and track
git push --force-with-lease # safe force push

Undoing

git reset --soft HEAD~1     # undo commit, keep changes staged
git reset --mixed HEAD~1    # undo commit, keep changes unstaged
git reset --hard HEAD~1     # undo commit, discard changes
git revert commit-hash      # create undo commit
git checkout -- file        # discard file changes (old)
git restore file            # discard file changes (new)

Cherry-pick

git cherry-pick commit-hash     # apply specific commit
git cherry-pick -n commit-hash  # apply without committing
git cherry-pick --abort         # cancel in progress

Clean

git clean -n                # preview what will be deleted
git clean -f                # delete untracked files
git clean -fd               # delete untracked files and dirs
git clean -fdx              # also delete ignored files

Submodules

git submodule add URL path  # add submodule
git submodule update --init # initialize after clone
git clone --recurse-submodules URL  # clone with submodules
git submodule update --remote       # update to latest

Aliases (add to ~/.gitconfig)

[alias]
    st = status
    co = checkout
    br = branch
    ci = commit
    lg = log --oneline --graph --all
    amend = commit --amend --no-edit
    unstage = reset HEAD --