How to create a new local repository
git init . # In the directory of choice.
git add <filename>
git add * # All files in current directory, except hidden files
git add . # All changes in repo, except deletions
git add -u # All changes including deletions in repo, but not new files
git add -A # All changes - What you'll mostly use.
How to remove files and add to git (Not used all that much)
git rm <filename>
Does exactly what rm
does and stages the changes.
In git every user can make changes and add them as a commit. A commit forms a part of a linkedlist in the repo. If you modify a commit inside the linked list - the chain breaks and the entire repo breaks. So all your changes are always only at the top.
In git there are 4 states each file can be in.
State | Meaning |
---|---|
Untracked | This file is not a part of the repo - even though it's in the file system. |
Unstaged | This is a part of the repo and changes were made, but the changes haven't been added. |
Staged | These changes are ready to be saved (committed) |
Committed | Saved! |
You can check the status of changes in a git repository by using git status
You can print the history of the git repo by using git log
Same as add
git reset HEAD # to unstage staged work
git reset HEAD <filename> # to unstage one file
Creating a commit basically means that you are committing to these changes and that you are making them permanent.
git commit
This opens the commit message dialog (vi
or nano
text editor opens.)
General commit message format:
<One line short explanation (max 56 char) end with fullstop>.
<Multiline long explanantion of the cause, solution and effect of bug etc>
<Fixes: xyz Read: xyz>
Sample:
commit cca7633739e433259b926224f659b9540e518e0a
Author: Anish <[email protected]>
Date: Mon Apr 23 19:25:36 2018 +0530
Replaces CTRL with CMD in TileMapEditor for MacOS.
Replacing CTRL with CMD makes sense dure to consistency
with MacOS and avoiding conflict with the accessibility
hotkey (ctrl+lmb = rmb)
Fixes: #18238
Time to go online!!!
git branch
git branch <new branch>
git checkout <some branch>
git merge <from>
git rebase <from>
git reset <where> #HEAD, HEAD^, HEAD~2, commit-hash
git revert