Books / Setting Up Development Environment on macOS / Chapter 5
Git and GitHub
What’s a developer without Git? To install, run:
brew install git
When done, to test that it installed properly you can run:
git --version
And which git
should output /usr/local/bin/git
.
Next, we’ll define your Git user (should be the same name and email you use for GitHub):
git config --global user.name "Your Name Here"
git config --global user.email "[email protected]"
They will get added to your .gitconfig
file.
To push code to your GitHub repositories, we will use the recommended HTTPS method. There are also instructions for using SSH. To prevent git
from asking for your username and password every time you push a commit you can cache your credentials by running the following command, as described in the instructions.
git config --global credential.helper osxkeychain
Using HTTPS for GitHub (recommended)
These instructions are from the official documentation.
Clone repositories using HTTPS
After creating a new repo on GitHub, clone it using:
git clone https://github.com/<username>/<repo-name>.git
- if you had initialized with a README.
If you did not, follow the instructions in the section below.
Set up a new or existing repo with HTTPS for GitHub
If you are setting up a new repo, add at least one file and commit first. Then, configure the remote and push to GitHub by running:
git remote add origin https://github.com/<username>/<repo-name>.git
git push -u origin master
SSH Config for GitHub
These instructions are for those who wish to use SSH and not HTTPS, and are from the official documentation.
Check for existing SSH keys
First check for existing SSH keys on your computer by running:
ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist
Check the directory listing to see if you have files named either id_rsa.pub
or id_dsa.pub
. If you don’t have either of those files then read on, otherwise skip the next section.
Generate a new SSH key
If you don’t have an SSH key you need to generate one. To do that you need to run the commands below, and make sure to substitute the placeholder with your email. The default settings are preferred, so when you’re asked to enter a file in which to save the key, just press Enter to continue.
ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key, using the provided email as a label
Add your SSH key to the ssh-agent
Run the following commands to add your SSH key to the ssh-agent
.
eval "$(ssh-agent -s)"
If you’re running macOS Sierra 10.12.2 or later, you will need to modify your ~/.ssh/config
file to automatically load keys into the ssh-agent and store passphrases in your keychain:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
No matter what operating system version you run you need to run this command to complete this step:
ssh-add -K ~/.ssh/id_rsa
Adding a new SSH key to your GitHub account
The last step is to let GitHub know about your SSH key so GitHub can recognize you. Run this command to copy your key to your clipboard:
pbcopy < ~/.ssh/id_rsa.pub
Then go to GitHub and input your new SSH key. Paste your key in the “Key” text-box and pick a name that represents the computer you’re currently using.
We are now ready to use SSH with GitHub!
Clone repositories using SSH
After creating a new repo on GitHub, clone it using
git clone [email protected]:<username>/<repo-name>.git
- if you had initialized with a README.
If you did not, follow the instructions in the section below.
Set up a new or existing repo with SSH for GitHub
If you are setting up a new repo, add at least one file and commit first. Then, configure the remote and push to GitHub by running:
git remote add origin [email protected]:<username>/<repo-name>.git
git push -u origin master
Git Ignore (global)
Create the file ~/.gitignore
as shown below
# Folder view configuration files
.DS_Store
Desktop.ini
# Thumbnail cache files
._*
Thumbs.db
# Files that might appear on external disks
.Spotlight-V100
.Trashes
# Compiled Python files
*.pyc
# Compiled C++ files
*.out
# Application specific files
venv
node_modules
.sass-cache
followed by running the command below, in terminal:
git config --global core.excludesfile ~/.gitignore
to not track files that are almost always ignored in all Git repositories.
Or simply download macOS specific .gitignore maintained by GitHub itself and put contents of it to ~/.gitignore
.
- You can also use a default gitignore using Curl
curl https://raw.githubusercontent.com/github/gitignore/master/Global/macOS.gitignore -o ~/.gitignore
Generate gitignore
Visit gitignore.io and fill it with your needs.