diff --git a/.gitignore b/.gitignore
index 089cb66..281342a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+.vscode
+**__pycache__**
+**.pytest_cache**
 *.egg-info
 *.pyc
 .cache
diff --git a/skipper/git.py b/skipper/git.py
index daa02c6..5098114 100644
--- a/skipper/git.py
+++ b/skipper/git.py
@@ -16,7 +16,7 @@ def get_hash(short=False):
     if uncommitted_changes():
         logging.warning("*** Uncommitted changes present - Build container version might be outdated ***")
 
-    return subprocess.check_output(git_command).strip()
+    return subprocess.check_output(git_command).strip().decode('utf-8')
 
 
 def uncommitted_changes():

diff --git a/tests/test_cli.py b/tests/test_cli.py
index 63011ed..9ac3b6b 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -1680,7 +1680,7 @@ class TestCLI(unittest.TestCase):
     @mock.patch('builtins.open', mock.MagicMock(create=True))
     @mock.patch('os.path.exists', mock.MagicMock(autospec=True, return_value=True))
     @mock.patch('yaml.safe_load', mock.MagicMock(autospec=True, return_value=SKIPPER_CONF_WITH_GIT_REV))
-    @mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value='1234567\n'))
+    @mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value=b'1234567\n'))
     @mock.patch('skipper.git.uncommitted_changes', mock.MagicMock(return_value=True))
     @mock.patch('skipper.runner.run', autospec=True)
     def test_run_with_config_including_git_revision_with_uncommitted_changes(self, skipper_runner_run_mock):
@@ -1701,7 +1701,7 @@ class TestCLI(unittest.TestCase):
     @mock.patch('builtins.open', mock.MagicMock(create=True))
     @mock.patch('os.path.exists', mock.MagicMock(autospec=True, return_value=True))
     @mock.patch('yaml.safe_load', mock.MagicMock(autospec=True, return_value=SKIPPER_CONF_WITH_GIT_REV))
-    @mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value='1234567\n'))
+    @mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value=b'1234567\n'))
     @mock.patch('skipper.git.uncommitted_changes', mock.MagicMock(return_value=False))
     @mock.patch('skipper.runner.run', autospec=True)
     def test_run_with_config_including_git_revision_without_uncommitted_changes(self, skipper_runner_run_mock):
diff --git a/tests/test_git.py b/tests/test_git.py
index a7c4703..2eed711 100644
--- a/tests/test_git.py
+++ b/tests/test_git.py
@@ -3,8 +3,8 @@ import mock
 from skipper import git
 
 
-GIT_HASH_FULL = '00efe974e3cf18c3493f110f5aeda04ff78b125f'
-GIT_HASH_SHORT = '00efe97'
+GIT_HASH_FULL = b'00efe974e3cf18c3493f110f5aeda04ff78b125f'
+GIT_HASH_SHORT = b'00efe97'
 
 
 class TestGit(unittest.TestCase):
@@ -14,7 +14,7 @@ class TestGit(unittest.TestCase):
         git_hash = git.get_hash()
         exists_mock.assert_called_once_with('.git')
         check_output_mock.assert_called_once_with(['git', 'rev-parse', 'HEAD'])
-        self.assertEqual(git_hash, GIT_HASH_FULL)
+        self.assertEqual(git_hash, GIT_HASH_FULL.decode('utf-8'))
 
     @mock.patch('subprocess.check_output', return_value=GIT_HASH_FULL)
     @mock.patch('os.path.exists', return_value=True)
@@ -22,7 +22,7 @@ class TestGit(unittest.TestCase):
         git_hash = git.get_hash(short=False)
         exists_mock.assert_called_once_with('.git')
         check_output_mock.assert_called_once_with(['git', 'rev-parse', 'HEAD'])
-        self.assertEqual(git_hash, GIT_HASH_FULL)
+        self.assertEqual(git_hash, GIT_HASH_FULL.decode('utf-8'))
 
     @mock.patch('subprocess.check_output', return_value=GIT_HASH_SHORT)
     @mock.patch('os.path.exists', return_value=True)
@@ -30,7 +30,7 @@ class TestGit(unittest.TestCase):
         git_hash = git.get_hash(short=True)
         exists_mock.assert_called_once_with('.git')
         check_output_mock.assert_called_once_with(['git', 'rev-parse', '--short', 'HEAD'])
-        self.assertEqual(git_hash, GIT_HASH_SHORT)
+        self.assertEqual(git_hash, GIT_HASH_SHORT.decode('utf-8'))
 
     @mock.patch('subprocess.check_output')
     @mock.patch('os.path.exists', return_value=False)

can't build skipper (skipper build cmd) with v2.0.0 and v2.0.1
See $TOPIC.

I get:

# skipper build
```python
WARNING:root:*** Uncommitted changes present - Build container version might be outdated ***
[skipper] Building image: assisted-service-build
INFO:skipper:Building image: assisted-service-build
Traceback (most recent call last):
  File "/usr/local/bin/skipper", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/site-packages/skipper/main.py", line 12, in main
    return_code = cli.cli(
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/skipper/cli.py", line 117, in build
    fqdn_image = image + ':' + tag
TypeError: can only concatenate str (not "bytes") to str
```
tests/test_git.py::TestGit::test_get_hash_with_default_argument tests/test_git.py::TestGit::test_get_short_hash tests/test_git.py::TestGit::test_get_full_hash tests/test_cli.py::TestCLI::test_run_with_config_including_git_revision_with_uncommitted_changes tests/test_cli.py::TestCLI::test_run_with_config_including_git_revision_without_uncommitted_changes
tests/test_git.py::TestGit::test_not_in_git_project tests/test_cli.py::TestCLI::test_run_with_publish_port_range tests/test_cli.py::TestCLI::test_run_non_interactive tests/test_cli.py::TestCLI::test_images_with_with_remote_error tests/test_cli.py::TestCLI::test_push_tag_fail tests/test_cli.py::TestCLI::test_build_multiple_images_with_non_existing_dockerfile tests/test_cli.py::TestCLI::test_subcommand_without_subcommand_params tests/test_cli.py::TestCLI::test_cli_help tests/test_cli.py::TestCLI::test_run_with_defaults_and_env_from_env_file tests/test_cli.py::TestCLI::test_build_multiple_images tests/test_cli.py::TestCLI::test_run_with_existing_remote_build_container tests/test_cli.py::TestCLI::test_build_existing_image_with_context tests/test_cli.py::TestCLI::test_subcommand_help tests/test_cli.py::TestCLI::test_rmi_local tests/test_cli.py::TestCLI::test_run_with_env_list_get_from_env tests/test_cli.py::TestCLI::test_images_without_local_results tests/test_cli.py::TestCLI::test_rmi_remote tests/test_cli.py::TestCLI::test_push_already_in_registry_with_force tests/test_cli.py::TestCLI::test_build_non_existing_image tests/test_cli.py::TestCLI::test_build_multiple_images_with_invalid_image tests/test_cli.py::TestCLI::test_images_with_missing_remote_results tests/test_cli.py::TestCLI::test_push_to_namespace tests/test_cli.py::TestCLI::test_run_with_defaults_and_env_from_multiple_env_file tests/test_cli.py::TestCLI::test_push_rmi_fail tests/test_cli.py::TestCLI::test_run_with_defaults_from_config_file_including_interpolated_volumes tests/test_cli.py::TestCLI::test_images_with_remote_results_only tests/test_cli.py::TestCLI::test_run_with_env tests/test_cli.py::TestCLI::test_run_with_existing_local_build_container tests/test_cli.py::TestCLI::test_images_with_multiple_local_results tests/test_cli.py::TestCLI::test_run_with_publish_textual_port tests/test_cli.py::TestCLI::test_run_with_publish_out_of_range_port tests/test_cli.py::TestCLI::test_push tests/test_cli.py::TestCLI::test_build_with_defaults_from_config_file_including_containers tests/test_cli.py::TestCLI::test_make_with_additional_make_params tests/test_cli.py::TestCLI::test_version tests/test_cli.py::TestCLI::test_run_with_defaults_from_config_file_including_workdir tests/test_cli.py::TestCLI::test_push_fail tests/test_cli.py::TestCLI::test_make_without_build_container_tag_with_context tests/test_cli.py::TestCLI::test_run_with_env_list tests/test_cli.py::TestCLI::test_make_with_default_params tests/test_cli.py::TestCLI::test_validate_project_image tests/test_cli.py::TestCLI::test_build_all_images tests/test_cli.py::TestCLI::test_run_with_defaults_from_config_file tests/test_cli.py::TestCLI::test_run_with_defaults_from_config_file_including_invalid_interploated_volumes_interpolated tests/test_cli.py::TestCLI::test_make_without_build_container_tag tests/test_cli.py::TestCLI::test_run_with_publish_textual_port_range tests/test_cli.py::TestCLI::test_images_with_single_local_results tests/test_cli.py::TestCLI::test_build_existing_image tests/test_cli.py::TestCLI::test_run_with_invalid_port_range tests/test_cli.py::TestCLI::test_run_with_env_wrong_type tests/test_cli.py::TestCLI::test_cli_without_params tests/test_cli.py::TestCLI::test_run_with_env_overriding_config_file tests/test_cli.py::TestCLI::test_make tests/test_cli.py::TestCLI::test_build_with_context_from_config_file tests/test_cli.py::TestCLI::test_run_with_publish_single_port tests/test_cli.py::TestCLI::test_run_with_non_existing_build_container tests/test_cli.py::TestCLI::test_shell tests/test_cli.py::TestCLI::test_run_non_interactive_from_environment tests/test_cli.py::TestCLI::test_run_without_build_container_tag_cached tests/test_cli.py::TestCLI::test_run_without_build_container_tag tests/test_cli.py::TestCLI::test_push_with_defaults_from_config_file tests/test_cli.py::TestCLI::test_rmi_remote_fail tests/test_cli.py::TestCLI::test_build_with_defaults_from_config_file tests/test_cli.py::TestCLI::test_run_with_non_default_net tests/test_cli.py::TestCLI::test_run_with_defaults_and_env_from_config_file tests/test_cli.py::TestCLI::test_images_with_all_results tests/test_cli.py::TestCLI::test_subcommand_without_global_params tests/test_cli.py::TestCLI::test_images_with_local_result_and_missing_remote_results tests/test_cli.py::TestCLI::test_run_interactive_from_environment tests/test_cli.py::TestCLI::test_run_with_defaults_from_config_file_including_workspace tests/test_cli.py::TestCLI::test_make_with_defaults_from_config_file tests/test_cli.py::TestCLI::test_run_with_publish_multiple_ports tests/test_cli.py::TestCLI::test_push_already_in_registry tests/test_cli.py::TestCLI::test_run_with_defaults_from_config_file_including_volumes