Git
What is Git?
Git is a popular version control system.
It was created by Linus Torvalds in 2005, and has been maintained by Junio Hamano since then.
It is used for:
- Tracking code changes
- Tracking who made changes
- Coding collaboration
Key Git Concepts
- Repository: A folder where Git tracks your project and its history.
- Clone: Make a copy of a remote repository on your computer.
- Stage: Tell Git which changes you want to save next.
- Commit: Save a snapshot of your staged changes.
- Branch: Work on different versions or features at the same time.
- Merge: Combine changes from different branches.
- Pull: Get the latest changes from a remote repository.
- Push: Send your changes to a remote repository.
Working with Git
- Initialize Git on a folder, making it a Repository
- Git now creates a hidden folder to keep track of changes in that folder
- When a file is changed, added or deleted, it is considered modified
- You select the modified files you want to Stage
- The Staged files are Committed, which prompts Git to store a permanent snapshot of the files
- Git allows you to see the full history of every commit.
- You can revert back to any previous commit.
- Git does not store a separate copy of every file in every commit, but keeps track of changes made in each commit!
Note
Note: Most Git actions (like staging, committing, and viewing history) happen on your own computer.
Only Push and Pull interact with remote servers like GitHub, GitLab, or Bitbucket to upload or download changes.
Git Install
Linux
Arch Linux
sudo pacman -S git
Debian
sudo apt install git
Fedora
sudo dnf install git
Mac OS
brew install git
Git Config
Configuration Levels
There are three levels of configuration:
- System (all users):
git config --system - Global (current user):
git config --global - Local (current repo):
git config --local
The order of precedence is:
- Local (current repo)
- Global (current user)
- System (all users)
The reason to use the different levels is that you can set different values for different users or repositories.
This can be used for example to set different default branches for different repositories and users.
git config --global user.name "Bernardus Ivan Hertanto"
git config --global user.email "[email protected]"
git config --global core.editor nvim
Get Started with Git
cd myproject
git init