Introduction to git (notes)

3 minute read

Published:

A step by step introduction to git. Also, see reference1 and reference2

Install git

Create ssh key pairs

  • Create ssh key pairs: $ ssh-keygen -t ed25519 -C "your_email@example.com"
  • Copy information of id_ed25519.pub into SSH keys at your github page

Clone a repository from github to a local directory

  • $ git clone https://github.com/xxxxxxx/xxxxxxxx.git

Add files, make changes, pull, push, etc.

  • Create new file in your repository: $ touch aFile.md
    • Also, if the file aFile.md already exists, you can edit it then excute the following steps
  • Restore changes in file (should be used before ‘git add .’): $ git restore aFile.md
  • Then the file “aFile.md” is Untracked, we can check it by: $ git status
  • Next, we can make it staged by: $ git add .
  • After that, we commit the change to the local repository by: $ git commit -m "aFile.md is added"
  • Finally, we push the change to the onCloud repository by: $ git push origin master
  • If changes have been made onCloud, Pull changes from the onCloud repository by: $ git pull
    • This is equal to $ git fetch + git merge

Branch

  • See local branches: $ git branch
  • See remote/onCloud branches: $ git branch -r
  • Create a new branch but stay at the old branch: $ git branch newBranch
  • Create a new branch and changed to the new branch: $ git checkout -b newBranch
  • Switch a branch: $ git switch newBranch
  • Merge a specified branch (sBranch) to the present branch: $ git merge sBranch
  • Delete a branch: $ git branch -d branchName
  • Delete a remote branch:
    • $ git push origin --delete branchName
    • $ git branch -dr [remote/branch]
  • Branch conflict
    • If a file is both updated, commited in different branches, e.g., master and dev, and dev is merged into master, then branch conflict will appear.
    • Thus we need to solve the conflict manully: either by artifically modify the target file in master branch, or just click a choice in the opened vscode window.
    • Finally, add, commit and push the updated master branch. And delete the dev branch if necessary.
  • If the branch dev is onCloud, we can clone/switch locally by: $ git branch dev remotes/origin/dev
  • Check the fetch and push urls: $ git remote -v
  • After edit and commit, update the local dev to onCloud dev by: $ git push origin dev

Version tag control

  • Use git tag use check the current version: $ git tag
  • After commit, use git tag use update the new version: $ git tag v1.3.99
  • Recheck the version by git tag
  • See the detailed change in each version: $ git show v1.3.99

Use alias (optional)

  • Change name of git xxxx command by a short one as: $ git config --global alias.[shortName] [commandName]
  • For example (git st = git status): $ git config --global alias.st status

Connection errors

  • Failed to connect to github.com port 443 after 21098 ms: Timed out
    • $ git config –global –unset http.proxy
    • $ git config –global –unset https.proxy
  • OpenSSL SSL_read: Connection was reset, errno 10054
    • $ git config –global http.sslVerify “false”