diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 6ffc3c4a01f18db1add0931186cd5c717f27e064..bec47efbbe1c0f5a60ed4e1fa0870d44aa81452c 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -50,9 +50,20 @@ const (
 	Version          = "0.9.12"
 )
 
-var app = utils.NewApp(Version, "the go-ethereum command line interface")
+var (
+	gitCommit       string // set via linker flag
+	nodeNameVersion string
+	app             *cli.App
+)
 
 func init() {
+	if gitCommit == "" {
+		nodeNameVersion = Version
+	} else {
+		nodeNameVersion = Version + "-" + gitCommit[:8]
+	}
+
+	app = utils.NewApp(Version, "the go-ethereum command line interface")
 	app.Action = run
 	app.HideVersion = true // we have a command to print the version
 	app.Commands = []cli.Command{
@@ -278,7 +289,7 @@ func main() {
 
 func run(ctx *cli.Context) {
 	utils.HandleInterrupt()
-	cfg := utils.MakeEthConfig(ClientIdentifier, Version, ctx)
+	cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
 	ethereum, err := eth.New(cfg)
 	if err != nil {
 		utils.Fatalf("%v", err)
@@ -290,7 +301,7 @@ func run(ctx *cli.Context) {
 }
 
 func console(ctx *cli.Context) {
-	cfg := utils.MakeEthConfig(ClientIdentifier, Version, ctx)
+	cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
 	ethereum, err := eth.New(cfg)
 	if err != nil {
 		utils.Fatalf("%v", err)
@@ -305,7 +316,7 @@ func console(ctx *cli.Context) {
 }
 
 func execJSFiles(ctx *cli.Context) {
-	cfg := utils.MakeEthConfig(ClientIdentifier, Version, ctx)
+	cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
 	ethereum, err := eth.New(cfg)
 	if err != nil {
 		utils.Fatalf("%v", err)
@@ -487,7 +498,7 @@ func exportchain(ctx *cli.Context) {
 		utils.Fatalf("This command requires an argument.")
 	}
 
-	cfg := utils.MakeEthConfig(ClientIdentifier, Version, ctx)
+	cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
 	cfg.SkipBcVersionCheck = true
 
 	ethereum, err := eth.New(cfg)
@@ -589,15 +600,17 @@ func makedag(ctx *cli.Context) {
 }
 
 func version(c *cli.Context) {
-	fmt.Printf(`%v
-Version: %v
-Protocol Version: %d
-Network Id: %d
-GO: %s
-OS: %s
-GOPATH=%s
-GOROOT=%s
-`, ClientIdentifier, Version, c.GlobalInt(utils.ProtocolVersionFlag.Name), c.GlobalInt(utils.NetworkIdFlag.Name), runtime.Version(), runtime.GOOS, os.Getenv("GOPATH"), runtime.GOROOT())
+	fmt.Println(ClientIdentifier)
+	fmt.Println("Version:", Version)
+	if gitCommit != "" {
+		fmt.Println("Git Commit:", gitCommit)
+	}
+	fmt.Println("Protocol Version:", c.GlobalInt(utils.ProtocolVersionFlag.Name))
+	fmt.Println("Network Id:", c.GlobalInt(utils.NetworkIdFlag.Name))
+	fmt.Println("Go Version:", runtime.Version())
+	fmt.Println("OS:", runtime.GOOS)
+	fmt.Printf("GOPATH=%s\n", os.Getenv("GOPATH"))
+	fmt.Printf("GOROOT=%s\n", runtime.GOROOT())
 }
 
 // hashish returns true for strings that look like hashes.
diff --git a/cmd/mist/main.go b/cmd/mist/main.go
index a3c58c9012929ca4be8ceefeb4c4f162555d7672..87181011fda7a50973f8306533ec4ccba99d8be6 100644
--- a/cmd/mist/main.go
+++ b/cmd/mist/main.go
@@ -41,6 +41,9 @@ const (
 )
 
 var (
+	gitCommit       string // set via linker flag
+	nodeNameVersion string
+
 	app           = utils.NewApp(Version, "the ether browser")
 	assetPathFlag = cli.StringFlag{
 		Name:  "asset_path",
@@ -55,6 +58,11 @@ func init() {
 	if len(rpcCorsFlag.Value) == 0 {
 		rpcCorsFlag.Value = "http://localhost"
 	}
+	if gitCommit == "" {
+		nodeNameVersion = Version
+	} else {
+		nodeNameVersion = Version + "-" + gitCommit[:8]
+	}
 
 	app.Action = run
 	app.Flags = []cli.Flag{
@@ -107,7 +115,7 @@ func run(ctx *cli.Context) {
 	tstart := time.Now()
 
 	// TODO: show qml popup instead of exiting if initialization fails.
-	cfg := utils.MakeEthConfig(ClientIdentifier, Version, ctx)
+	cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
 	ethereum, err := eth.New(cfg)
 	if err != nil {
 		utils.Fatalf("%v", err)