git init				>> initiates git in the current directory
git clone <address>			>> creates a git repo from given address (get the address from your git-server)
===
git add file.txt			>> adds(stages) file.txt to the git
git add *				>> adds(stages) all new modifications, deletions, creations to the git
git reset file.txt			>> Removes file.txt from the stage
git rm file.txt				>> removes file.txt both from git and file system
git status				>> shows the modifications and stuff that are not staged yet
===
git branch				>> shows all the branches (current branch is shown with a star)
git branch my-branch 			>> creates my-branch
git branch -d my-branch			>> deletes my-branch
git checkout my-bracnch			>> switches to my-branch
git merge my-branch			>> merges my-branch to current branch
===
git remote				>> shows the remotes
git remote -v 				>> shows the remote for pull and push
git remote add my-remote <address>	>> creates a remote (get the address from your git-server)
===
git log 				>> shows the log of commits
git commit -m 'msg'			>> commit changes with a msg
git push my-remote my-branch		>> pushes the commits to the my-remote in my-branch (does not push the tags)
===
git tag 				>> shows all the tags
git tag -a v1.0 -m 'msg'		>> creates an annotated tag
git show v1.0				>> shows the description of version-1.0 tag
git tag --delete v1.0			>> deletes the tag in local directory
git push --delete my-remote v1.0	>> deletes the tag in my-remote (be carefore to not delete a branch)
git push my-remote my-branch v1.0	>> push v1.0 tag to my-remote in my-branch
git fetch --tags 			>> pulls the tags from remote
===
git pull my-remote my-branch		>> pulls and tries to merge my-branch from my-remote to the current branch
===
git stash 				>> stashes the staged and unstaged changes (git status will be clean after it)
git stash -u				>> stash everything including new untracked files (but not .gitignore)
git stash save 'msg'			>> stash with a msg
git stash list				>> list all stashes
git stash pop				>> delete the recent stash and applies it
git stash stach@{2}			>> delete the {2} stash and applies it
git stash show				>> shows the description of stash
git stash apply				>> keep the stash and applies it to the git
git stash branch my-branch stash@{1}	>> creates a branch from your stash
git stash drop stash@{1} 		>> deletes the {1} stash
git stash clear				>> clears all the stash
===
.gitignore
	>> is a file including names of stuff that you don't want to be staged or tracked.
	>> You usually keep your local files like database, media, and etc here.
	>> You can find good resources online about ignoring specific files in your project files.
	>> .gitignore is also get ignored 
.git
	>> is a hiiden directory in repo directory including git files. It is created after "git init".



