more fun with git branches

Posted by Cliff Brake on 2009-01-09 | Be the First to Comment

One thing you learn after using git for awhile is you get used to trying random things, and it will often just work.  For example, if I want to know the differences between Linus’s kernel tree, and the Wolfson dev branch for a particular directory:

cbrake@happy:/build/linux-2.6$ git diff --stat origin/master..wolfson/dev sound/soc/codecs
 sound/soc/codecs/Kconfig       |  125 +++
 sound/soc/codecs/Makefile      |   34 +
 sound/soc/codecs/ad1939.c      |  690 +++++++++++++++
 sound/soc/codecs/ad1939.h      |   70 ++
 sound/soc/codecs/ad1980.c      |  309 +++++++
 sound/soc/codecs/ad1980.h      |   23 +
 sound/soc/codecs/cs4251x.c     |  771 +++++++++++++++++

Another way to get similar information is:

git log origin/master..wolfson/dev sound/soc/codecs

If I’m working on a topic branch, and I want to see a summary of all the changes in my Topic branch:

git log --stat origin/master..origin/my_topic_branch > my_topic_branch_changelog.txt

One of the neat things about git branches is you don’t have to be on a branch to interact with it.  You can diff, log, and checkout from branches other than the one you are currently in, and it is all very fast.  For instance, if I want to grab the latest copy of a file in the Wolfson dev branch, I can do something like:

git log checkout wolfson/dev sound/soc/codecs/wm9713.c

Not that this is a very good idea, but just to illustrate a point.  Git branches are amazing and make development work so much less tedious.

Add A Comment