Skip to content
Jeff Tratner edited this page Aug 14, 2013 · 3 revisions

add the pandas remote repository to your fork and name it upstream

git remote add upstream git://github.com/pydata/pandas

pull in the latest upstream changes without merging

git fetch upstream

fetch changes from upstream and rebase off of latest upstream/master changes

git fetch upstream
git rebase upstream/master

fetch and then rebase interactively to squash, reword, fix, otherwise change some commits

git fetch upstream
git rebase --interactive upstream/master

This tip allows you to rebase relative to upstream/master which allows you to do squash commits from the point at which your fork diverged from pandas upstream

working on top of a branch that might be rebased

NOTE: This only applies if you are working on a branch other than master, which could be rebased by its current owner. If you're working off of a topic branch that might be rebased by others, you might want to keep closer track of where you started and the end of your commits so you can rebase painlessly.

When you checkout the branch initially, tag it as a base commit, e.g. (assuming upstream is a remote):

git checkout upstream/some-branch
# tag base of branch
git tag some-branch_base some-branch
git checkout -b my-working-branch

Then, when you want to put your commits on top of the updated branch (whether rebased or not), you can do:

git fetch upstream # update remote
git checkout upstream/some-branch # results in detached HEAD
# put your commits on top
git cherry-pick some-branch_base..my-working-branch
# delete previous branch and put your changes into the new branch
git branch -D my-working-branch
git checkout -b my-working-branch
# update the tag to refer to the new base
git tag -d some-branch_base
git tag some-branch_base some-branch

Making your git life easier when hacking on pandas

list your global git config values

git config --list --global

don't clobber file permissions

git config --global core.filemode false

keep the line endings the same as the input file, i.e., don't convert them to your platform

git config --global core.autocrlf input