Git Areas and Stashing
Posted on August 28, 2020 in Git by Matt Jennings

The information below is from Git Foundations chapter of Git In-depth.

Three Areas Where Code Lives

  1. Work Area (Work Tree)
  2. Staging Area (Cache or Index)
  3. Repository

The Working Area

Called untracked files.

The Staging Area (Index or Cache)

  • Files that are going to be part of the next commit.
  • The staging area is how git knows what will change between the current commit and the next commit.
  • To view files that are in the staging area:
    git ls-files -s
  • Add a file to the next commit:
    git add <file_name>
  • Delete a file in the next next commit:
    git rm <file_name>
  • Rename a file in the next commit:
    git mv <file_name>

The Repository

  • The files git knows about.
  • Contains all of your commits.

git add -p

  • Allows you to stage commits in hunks interactively.

Git Stash

  • Save un-commited work.
  • The stash is safe from destructive operations.
  • Stash changes:
    git stash
  • List changes in a stash that are un-commited work
    git stash list
  • Keep untracked files
    git stash --include-untracked
  • Remove the last stash and apply those changes, unless there’s a merge conflict:
    git stash pop
  • Remove the last stash
    git stash drop
  • Remove all stashes
    git stash clear

Git Stash – What Nina Uses

  • Keep untracked files
    git stash --include-untracked
  • Name stashes for easy reference
    git stash save "WIP: making progress on foo"
  • Checkout the latest stash
    git stash apply stash@{0}
    git stash apply


Leave a Reply

To Top ↑