Learning Git

Here’s a good online tutorial for learning GIT


Pushing to Heroku

What you may miss off-the-bat is that Heroku’s copy of your app is actually a git repository. It’s like github’s repository of your code, but it is used for the special purpose of deploying the app.

When you do a deploy to Heroku, you are pushing only your latest commits to the master branch of the Heroku repository for your app.

Type more .git/config at the command line of one of your apps, you will see a git remote for the heroku repository

[remote “heroku_abc_app”]
  url =
  fetch = +refs/heads/*:refs/remotes/heroku/*

In my case, the name of my heroku app is abc-app (made up) but I’ve attached it to a git identifier (just something I type at the command line) called heroku_abc_app

To deploy this app, I would use:

git push heroku_abc_app master:master

This is saying I want to put my local master branch (the first “master”) to the master branch of the remote repository (the second “master” after the colon) to the repository which is identified by heroku_abc_app (defined in .git/config), in my case that repository happens to be at

You can also push a different branch to Heroku, like this

git push heroku_abc_app some_branch:master

This is saying you want to push some_branch onto the master branch of your your app. Be careful – if you push a branch and then try to push another branch (or master) onto a non-downstream git timeline, you will get rejected. You can easily fix this with --force at the end of your command.

Although Heroku’s git repository acts just like a real git repository, most of us use github as the authoritative source for our app’s code and the Heroku git setup only for deploying.


Github asks for my password every time

I recently had to re-set my git repo, and after I did every time I did git pull or git push I was asked to re-enter my password.

Turns out this is what happens when you clone your repository using the https syntax and not the git@ syntax.

See also:



Configure git so that it shows green & red in my terminal

Create a file in your home directory here:

(The dot makes it invisible of course)

In this file, you can configure lots of git stuff:

email =
name = John Doe
rename = copy

# Always enable color, in all commands
ui = true

And if you want some handy aliases for typing less when using git, try these:

ba = branch -a
st = status
ca = commit -a -v
ci = commit -v
pl = pull –rebase
pu = push
cmp = gc –aggressive