diff --git a/Utilities/git-version-gen.cmd b/Utilities/git-version-gen.cmd
new file mode 100644
index 0000000000..3cd4334b4a
--- /dev/null
+++ b/Utilities/git-version-gen.cmd
@@ -0,0 +1,73 @@
+@echo off
+
+rem // This program is free software: you can redistribute it and/or modify
+rem // it under the terms of the GNU General Public License as published by
+rem // the Free Software Foundation, version 2.0 or later versions.
+
+rem // This program is distributed in the hope that it will be useful,
+rem // but WITHOUT ANY WARRANTY; without even the implied warranty of
+rem // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+rem // GNU General Public License 2.0 for more details.
+
+rem // A copy of the GPL 2.0 should have been included with the program.
+rem // If not, see http://www.gnu.org/licenses/
+
+rem // Official git repository and contact information can be found at
+rem // https://github.com/hrydgard/RPCS3 and http://www.RPCS3.org/.
+
+setlocal ENABLEDELAYEDEXPANSION
+
+set GIT_VERSION_FILE=%~p0..\rpcs3\git-version.h
+if not defined GIT (
+ set GIT="git"
+)
+call %GIT% describe > NUL 2> NUL
+if errorlevel 1 (
+ echo Git not on path, trying default Msysgit paths
+ set GIT="%ProgramFiles(x86)%\Git\bin\git.exe"
+ call !GIT! describe > NUL 2> NUL
+ if errorlevel 1 (
+ set GIT="%ProgramFiles%\Git\bin\git.exe"
+ )
+)
+
+if exist "%GIT_VERSION_FILE%" (
+ rem // Skip updating the file if RPCS3_GIT_VERSION_NO_UPDATE is 1.
+ findstr /B /C:"#define RPCS3_GIT_VERSION_NO_UPDATE 1" "%GIT_VERSION_FILE%" > NUL
+ if not errorlevel 1 (
+ goto done
+ )
+)
+
+call %GIT% describe --always > NUL 2> NUL
+if errorlevel 1 (
+ echo Unable to update git-version.h, git not found.
+ echo If you don't want to add it to your path, set the GIT environment variable.
+
+ echo // This is a generated file. > "%GIT_VERSION_FILE%"
+ echo. >> "%GIT_VERSION_FILE%"
+ echo #define RPCS3_GIT_VERSION "unknown" >> "%GIT_VERSION_FILE%"
+ echo. >> "%GIT_VERSION_FILE%"
+ echo // If you don't want this file to update/recompile, change to 1. >> "%GIT_VERSION_FILE%"
+ echo #define RPCS3_GIT_VERSION_NO_UPDATE 0 >> "%GIT_VERSION_FILE%"
+ goto done
+)
+
+for /F %%I IN ('call %GIT% describe --always') do set GIT_VERSION=%%I
+
+rem // Don't modify the file if it already has the current version.
+if exist "%GIT_VERSION_FILE%" (
+ findstr /C:"%GIT_VERSION%" "%GIT_VERSION_FILE%" > NUL
+ if not errorlevel 1 (
+ goto done
+ )
+)
+
+echo // This is a generated file. > "%GIT_VERSION_FILE%"
+echo. >> "%GIT_VERSION_FILE%"
+echo #define RPCS3_GIT_VERSION "%GIT_VERSION%" >> "%GIT_VERSION_FILE%"
+echo. >> "%GIT_VERSION_FILE%"
+echo // If you don't want this file to update/recompile, change to 1. >> "%GIT_VERSION_FILE%"
+echo #define RPCS3_GIT_VERSION_NO_UPDATE 0 >> "%GIT_VERSION_FILE%"
+
+:done
diff --git a/rpcs3/Gui/MainFrame.cpp b/rpcs3/Gui/MainFrame.cpp
index 0a6b1c435f..e629d2cdba 100644
--- a/rpcs3/Gui/MainFrame.cpp
+++ b/rpcs3/Gui/MainFrame.cpp
@@ -2,6 +2,7 @@
#include "MainFrame.h"
#include "CompilerELF.h"
+#include "git-version.h"
#include "Emu/System.h"
#include "Ini.h"
#include "Emu/GS/sysutil_video.h"
@@ -34,7 +35,13 @@ MainFrame::MainFrame()
: FrameBase(NULL, wxID_ANY, "", "MainFrame", wxSize(280, 180))
, m_aui_mgr(this)
{
+
+#ifdef _DEBUG
+ SetLabel(wxString::Format(_PRGNAME_ " git-" RPCS3_GIT_VERSION));
+#else
SetLabel(wxString::Format(_PRGNAME_ " " _PRGVER_));
+#endif
+
wxMenuBar& menubar(*new wxMenuBar());
wxMenu& menu_boot(*new wxMenu());
diff --git a/rpcs3/git-version.h b/rpcs3/git-version.h
new file mode 100644
index 0000000000..55c272acc7
--- /dev/null
+++ b/rpcs3/git-version.h
@@ -0,0 +1,6 @@
+// This is a generated file.
+
+#define RPCS3_GIT_VERSION "cd3ad0b"
+
+// If you don't want this file to update/recompile, change to 1.
+#define RPCS3_GIT_VERSION_NO_UPDATE 0
diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj
index 50c21ec9bf..85c4bab58d 100644
--- a/rpcs3/rpcs3.vcxproj
+++ b/rpcs3/rpcs3.vcxproj
@@ -128,8 +128,7 @@
%(IgnoreSpecificDefaultLibraries)
-
-
+ $(SolutionDir)\Utilities\git-version-gen.cmd