diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb
index 8f3008df84808b68912dc6d2fe9e775501872343..e1932da7efe7c0ed5eab56b8926b27e636a8c781 100644
--- a/lib/redmine/scm/adapters/git_adapter.rb
+++ b/lib/redmine/scm/adapters/git_adapter.rb
@@ -100,6 +100,13 @@ module Redmine
         def default_branch
           bras = self.branches
           return nil if bras.nil?
+           head = nil
+           scm_cmd('symbolic-ref', 'HEAD') do |io|
+             head = io.readline
+           end
+           /^refs\/heads\/(.*)$/.match(head)
+           bras.include?($1) ? $1 : bras.first
+         rescue ScmCommandAborted, EOFError
           bras.include?('master') ? 'master' : bras.first
         end
 
diff --git a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
index acee7b901dc3647b07d389b0bdc9d48f1e258316..157244176be05291cacec560dc4518533f6ef5a8 100644
--- a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
+++ b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
@@ -231,6 +231,13 @@ begin
         end
       end
 
+      def test_default_branch
+        @adapter.send :scm_cmd, 'branch', '-m', 'master', 'non-master-default-branch'
+        assert_equal 'non-master-default-branch', @adapter.default_branch
+      ensure
+        @adapter.send :scm_cmd, 'branch', '-m', 'non-master-default-branch', 'master'
+      end
+
       private
 
       def test_scm_version_for(scm_command_version, version)