Skip to content

Instantly share code, notes, and snippets.

@namnh68
Forked from trey/happy_git_on_osx.md
Created July 29, 2017 10:17
Show Gist options
  • Save namnh68/431135de8feec67f7c366fe727a43398 to your computer and use it in GitHub Desktop.
Save namnh68/431135de8feec67f7c366fe727a43398 to your computer and use it in GitHub Desktop.
Creating a Happy Git Environment on OS X

Configure things:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global alias.co checkout
git config --global apply.whitespace nowarn

Setup an SSH key

ssh-keygen

Hit return a couple of times -- leave password blank if you want.

cat ~/.ssh/id_rsa.pub | pbcopy

Paste that code into your settings page on your repository host(s).

Set up Global Git Config on your GitHub account page (the same place you pasted your SSH key). You'll type in some stuff that looks like this:

git config --global github.user [your_username]
git config --global github.token [your_token]

Get happy Git colors. Paste the following into your ~/.gitconfig file:

[color]
	branch = auto
	diff = auto
	status = auto
[color "branch"]
	current = yellow reverse
	local = yellow
	remote = green
[color "diff"]
	meta = yellow bold
	frag = magenta bold
	old = red bold
	new = green bold
[color "status"]
	added = yellow
	changed = green
	untracked = cyan

Create a ~/.gitexcludes file and paste in this:

.DS_Store

There, now you don't have to ignore that every time.

Bash Fanciness

Add the following to your ~/.bash_profile or ~/.bashrc:

source /usr/local/git/contrib/completion/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
export PS1='[\u@mbp \w$(__git_ps1)]\$ '

That will add tab auto-completion for Git branches, display the current branch on your prompt, and show a '*' after the branch name if there are unstaged changes in the repository, and a '+' if there are staged (but uncommitted) changes. It will look something like this:

[user@computer ~/Sites/example.com (master*)]$ 

Bonus

If you want to have a different email address for a particular project (a personal project on your work computer, perhaps?), just run this command inside that project's folder:

git config user.email "[email protected]"

It's the same command as before, this time just omitting the --global.

Sources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment