GitHub instruction for new repositories
If you want to create a new repository on the command line
echo "# my_repo" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:alshlyapin/my_repo.git
git push -u origin main
If you want to push an existing repository from the command line
git remote add origin git@github.com:alshlyapin/my_repo.git
git branch -M main
git push -u origin main
Creating a new branch
git checkout -b <branch>
# or
git branch <branch>
git checkout <branch>
Actions when changing something
git add .
git commit -m "<commit_message>"
git push --set-upstream origin <branch>
# After initial --set-upstream, you can just use git push without --set-upstream
Force git pull
git reset --hard origin/master
Rebase
git checkout master
git pull
git fetch origin
git checkout my_branch
git rebase origin/master # Rebases current branch onto origin/maste
git push --force
Alternatively, if only one remote
git checkout master
git pull
git checkout my_branch
git rebase master
git push --force
Rename local and remote branch
# Rename the local branch to the new name
git branch -m <old_branch_name> <new_branch_name>
git push origin --delete <old_branch_name>
# Prevent git from using the old name when pushing in the next step.
# Otherwise, git will use the old upstream name instead of <new_name>.
git branch --unset-upstream <new_branch_name>
# Push the new branch to remote
git push origin <new_branch_name>
# Reset the upstream branch for the new_name local branch
git push origin -u <new_branch_name>
Log
# show 5 last commits in short form
git log --pretty=oneline -n 5
Squash
# squash last 3 commits
git rebase -i HEAD~3
git commit
# or
git reset --soft HEAD~3
git commit
Roll back a commit
# remove 2 last commits
git reset HEAD~2
Restore only one file
git checkout HEAD -- my_file.txt
Remove branch locally and remotely
# delete branch locally
git branch -d <branch>
# delete branch remotely
git push origin --delete <branch>
# reset to origin/master
git reset --hard origin/master
Checkout a remote branch
Short version:
git checkout <branch>
Checkout a remote branch, delete all not commited files
git fetch
git clean -xdf
git reset --hard HEAD
git checkout my_branch
git reset origin/my_branch
git clean -xdf
git reset --hard HEAD
Change URL of a remote repo
# first time (no origin yet)
git remote add origin https://github.com/user/repo.git
# second time and later (origin already exists)
git remote set-url origin ssh://git@github.com:alshlyapin/my_repo.git
# check what's set
git config --get remote.origin.url
Solve git status shows all files as modified but the content is not changed
# solution (if it's caused by change of mode (chmod))
git config core.filemode false
Check difference between branches
git diff my_branch master -- file.py
Merge into master
git checkout master
git pull origin master
git merge my_branch
git push origin master
Compare a branch to master
git diff master...my_branch
Other
# to abort rebase
git rebase --abort
# show differences in comparison with the last commit
git diff