diff --git a/git-gui b/git-gui
index 34a1daa44d55146c2ac43e4c7a070cd6ce184b98..dd2d750ab17f9c1831ffea70459d07726bfcfaec 100755
--- a/git-gui
+++ b/git-gui
@@ -258,11 +258,20 @@ proc unlock_index {} {
 ## status
 
 proc repository_state {ctvar hdvar mhvar} {
-	global gitdir
+	global gitdir current_branch
 	upvar $ctvar ct $hdvar hd $mhvar mh
 
 	set mh [list]
 
+	if {[catch {set current_branch [exec git symbolic-ref HEAD]}]} {
+		set current_branch {}
+	} else {
+		regsub ^refs/(heads|tags)/ \
+			$current_branch \
+			{} \
+			current_branch
+	}
+
 	if {[catch {set hd [exec git rev-parse --verify HEAD]}]} {
 		set hd {}
 		set ct initial
@@ -3060,6 +3069,25 @@ if {[is_MacOSX]} {
 }
 
 
+# -- Branch Control
+#
+frame .branch \
+	-borderwidth 1 \
+	-relief sunken
+label .branch.l1 \
+	-text {Current Branch:} \
+	-anchor w \
+	-justify left \
+	-font font_ui
+label .branch.cb \
+	-textvariable current_branch \
+	-anchor w \
+	-justify left \
+	-font font_ui
+pack .branch.l1 -side left
+pack .branch.cb -side left -fill x
+pack .branch -side top -fill x
+
 # -- Main Window Layout
 #
 panedwindow .vpane -orient vertical
@@ -3486,6 +3514,7 @@ set PARENT {}
 set MERGE_HEAD [list]
 set commit_type {}
 set empty_tree {}
+set current_branch {}
 set current_diff {}
 set selected_commit_type new