pip install grip # https://github.com/joeyespo/grip
grip # Running on http://localhost:6419/
grip support with limited times of usage, we can use VSCode markdown previwer instead.
Clone with Personal Access Tokens (PAT)
Go to this link to generate a new PAT. Then using your PAT as a password.
$ git clone https://github.com/fakeuser/fake-repo.git
Clone via [email protected] (ssh)
Update: It's easier if we use Github CLI!
# Windows + Linux
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# (-C for adding comment only)
# Enter a file:
# Linux: /home/thi/.ssh/id_rsa
# Windows: C:\Users\dinha\.ssh\id_rsa
# Enter password
# Tell who you are? (it's global, you may need to set it locally for each repo)
git config --global user.name "Thi Dinh"
git config --global user.email "[email protected]"
In case you have multiple accounts, you have to indicate separatedly the account in each repository,
git config user.name "Thi"
git config user.email "[email protected]"
If 2 accounts on 2 different platforms,
# Default github account: [email protected]
# Other github account: [email protected]
If 2 accounts on the same platforms, eg. Github
It's important on linux, otherwise, you won't be able to use ssh-agent in zsh environment
eval "$(ssh-agent -s)"
Everytime you have problems, just
# Delete all cached keys (be careful)
# Be careful, it will reset and use different agent!!!!
eval "$(ssh-agent -s)"
# ssh-add ~/.ssh/id_rsa_ideta
# Check saved keys
# Go to https://github.com/settings/keys
# copy public key
# clone some repo
git clone [email protected]:dinhanhthi/dinhanhthi.com.git
- Commits to a fork don't appear in your contributions graph.
- Commits to a generated from template can appear in your contributions graph.
- Get size of a github repo:
https://api.github.com/repos/<user>/<repo>then find property "size". The size is in KB.
I wanna make a theme
notetheme2 based on dinhanhthi.com.
dinhanhthi.combe a template (Go to Settings)
Create a new repo based on this template.
Create a new branch
dinhanhthi.com. Make changes on this branch.
Everything we have a "theme change" on
dinhanhthi.com/master, merge it to branch
If there are files (only for files) in
dinhanhthi.com/notetheme2you wanna keep, add below line to
dinhanhthi.com/notetheme2) before performing the merge,
# add line to .gitattributes
echo 'file_name.txt merge=ours' >> .gitattributes
# on windows, remove `''`
If there are folders (or files) in
dinhanhthi.com/notetheme2you don't wanna keep (from
/master), just delete them and make a new commit. From this time, later merges will ignore them.
If there are folders in
/notethem2you wanna keep the current state (instead of merging from master), create a script
# used for branch notetheme2 only
echo 'Reset some only-this-branch folders after merging.'
git reset folder_1 folder_2
git checkout .
git add .
git commit -m "update from master"
Each time you run the merge, run
git merge master && sh reset_folders.sh
Update changes from
# add dinhanhthi.com as a remote
git remote add template [URL of the template repo]
# update the changes
git fetch --all
# update from template's branch
git merge template/notetheme2
If there is an error
fatal: refusing to merge unrelated histories, try to add
--allow-unrelated-histories. There must be conflict.
# keep remotes
git merge -X theirs template/notetheme2 --allow-unrelated-histories
# keep local
git merge -X ours template/notetheme2 --allow-unrelated-histories
Add Shields tags
# scikit-learn badge
- Logo name can be found at simpleicon. If the name includes spaces, replace them with dashes (e.g:
- Wanna create a custom logo?
fatal: Authentication failed for: It's because you enabled two-factor authentication in your Github account.
- Generate a new token: click here.
- Copy that token and use it as a new password.
ssh: connect to host github.com port 22: No route to host
fatal: Could not read from remote repository
# add following
# run again to check
ssh -T [email protected]
push declined due to email privacy restrictions
This problem happens when you set your email to private (Go to
https://github.com/settings/emails, you clicked on "Keep my email addresses private"). When you tick on this option, Github will generate an alternative email ("noreply" email) for you, eg.
[email protected]. What you should do to make this email work with the
Make sure the repo you are working all is linked with this new email.
# Check email you use in the current project
# If above doesn't have any email, it means you are using the global
# Check the global
git config user.email
# You must:
# either change the current project to "noreply" email
git config user.email <noreply-email>
# or change the global
git config --global user.email <noreply-email>
Make sure ALL the commits you are going to push are assigned to new email (It means that the things you have just commited were assigned to the old email)
# If you only have 1 commit assigned to the old email
# Reset it
git reset --soft HEAD~1
If you have multiple commit to fix, try this.