Post

How to setup git and GitHub on macOS?

A step by step guide to setup git and github on Mac

1.Prerequisite

Make sure that following tools are installed on your Mac

  • Apple’s Developer Tools
  • MacPorts Package Manager

If you don’t know what are these then don’t worry. Follow this beginner tutorial to install Apple’s Developer Tools and MacPorts.

2. Install Git

In step #1 we installed Apple’s Developer Tools. It installs a set of tools for development and along with other tools it also install git. In the terminal, run

1
git --version

and it will return something like

1
git version 2.39.3 (Apple Git-145)

We will use this git. If you want to use the latest version then you can install it using port

1
sudo port install git

Setup your git username and commit email address.

1
2
git config --global user.name "username"
git config --global user.email "useremail@host.com"

Replace username and useremail@host.com with your’s.

Now it’s time to learn version control using git

3. Setting up a GitHub account

Create a GitHub account to host your code on cloud and share it other developers.

4. Connect git with GitHub

You need to connect your git to GitHub. You can either connect over HTTPS os SSH. For beginner I would recommend to connect over SSH. Follow the following docs:

4.1 Generate a new SSH key

Open your terminal and run the command below after replacing "demo@example.com" with your email address you used to create your GitHub account in step #3

1
ssh-keygen -t ed25519 -C "demo@example.com"

This will prompt you for a file to save keys (press enter for default file location) and then asks for password (choose a password or press enter for empty password)

1
2
3
Generating public/private ed25519 key pair.
Enter file in which to save the key (/xxxx/xxxx/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 

This will create a pair of private and public keys id_ed25519 and id_ed25519.pub in ~/.ssh directory.
Once these keys are generated successfully, run the ssh-agent in the background

1
eval "$(ssh-agent -s)"

4.2 Modify your ~./ssh/config file

Check if ~./ssh/config exists, else create one

1
touch ~./ssh/config

Open ~./ssh/config in your favorite text editor and add these lines

1
2
3
4
5
6
7
8
9
10
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

Host *
   # Uncomment below line if you choose a password to generate keys
   # UseKeychain yes
   AddKeysToAgent yes
   IdentitiesOnly yes

4.3 Add SSH keys to your macOS Keychain

1
2
ssh-add -D           # Will delete all identities added previously from the ssh agent
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Check the added key with ssh-add -l.

4.4 Add the generated key to your github account

  • Copy the generated public SSH key on clipboard
1
pbcopy < ~/.ssh/id_ed25519.pub
  • Go to your GitHub account and click on your the avatar on top right corner and then click on Settings

  • On the left sidebar, click on SSH and GPG keys and then click on New SSH Key

  • Add some title if you wish (like “My MacBook’s SSH Key”)

  • In Key Type section, select Authentication Key

  • Paste the public key in the Key section.

4.5 Test the Connection

1
ssh -T git@github.co

If you setup your git and GitHub account correctly then the above command should return the below message

1
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

5. Create a local repo and host it on GitHub

Create a new repository demo on GitHub. After creating the repo successfully you will see three options to clone your repo: HTTPS, SSH and GitHub CLI. Choose SSH and copy the remote url.

img

5.1 Clone a Remote Repository

Open your terminal and clone this repo typing git clone and then paste your repo remote url.

1
git clone git@github.com:haccks/demo.git

Now you can go to the demo directory and start making changes and push it to the GitHub.

5.2 Host a Local Repository

Create a local repo named demo

1
mkdir demo

and perform these actions

1
2
3
4
5
6
7
8
9
10
cd demo
git init
git add README.md
git commit -m "First commit"

# Connect your local repo with the remote repo
git remote add origin git@github.com:haccks/demo.git

git branch -M main
git push -u origin main

If you already have a local repo then ignore the first four commands and use the last three only.

We are done here!

If you want to use multiple github accounts on Mac then follow this tutorial: How to use multiple github accounts on Mac?


References:
1. Generating a new SSH key and adding it to the ssh-agent.
2. Adding a new SSH key to your GitHub account.

This post is licensed under CC BY 4.0 by the author.