Fundamental concepts to understand how Git works.
Stream of snapshots
Git saves data like a stream of snapshots. Every time you commit, or save the state of your project in Git, it basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot. if files have not changed, Git doesn’t store the file again, just a link to the previous identical file it has already stored.
Git has integrity. Everything in Git is check-summed before it is stored and is then referred to by that checksum. It uses SHA-1.
There are three file states:
- Committed means that the data is stored in your local database.
- Modified means that you have changed the file but have not committed it to your database yet.
- Staged means that you have marked a modified fi\e in its current version to go into your next commit snapshot.
Lifecycle of the status of files
Sections of a Git project:
- the Git directory is where Git stores the metadata and object database for your project. It is copied when cloning a repo.
- the working directory is a single checkout of one version of the project. These files are pulled out of the compressed database in the Git directory and placed on disk for you to use or modify.
- the staging area is a file, generally contained in your Git directory, that stores information about what will go into your next commit. It’s sometimes referred to as the index.
.git"] git==>stage["Staging Area"] git==>work["Working Directory"]