diff --git a/registerExperiment.py b/registerExperiment.py
index 9b6cf874e78cb843ac23a5d9b8d4937e28cf31aa..ab38a0d0dd02b6180d20860f72863f43c51c38dd 100644
--- a/registerExperiment.py
+++ b/registerExperiment.py
@@ -33,6 +33,14 @@ def isGitRepo(path) -> bool:
     except git.exc.InvalidGitRepositoryError:
         return False
 
+def checkForChanges() -> None:
+    changesNotAdded = [ item.a_path for item in repository.index.diff(None) ]
+    changesAdded = [ item.a_path for item in repository.index.diff(repository.head.name) ]
+    untrackedFiles = repository.untracked_files
+
+    if ((len(changesNotAdded) + len(changesAdded) + len(untrackedFiles)) > 0):
+        raise Exception("There are changes in the repository since the last commit, you can only register an experiment from a clean repository.")
+
 def init(pathInput) -> None :
     global repository,path,experimentName,tags, currentTag
     if isGitRepo(pathInput):
@@ -44,6 +52,7 @@ def init(pathInput) -> None :
         os.chdir(path)
     else :
         raise Exception(f"{pathInput} is not a git repository")
+    checkForChanges()
     tags = repository.tags
     currentTag = repository.git.describe('--tags')
     if not(currentVersionIsTagged()):
@@ -174,6 +183,8 @@ def genChecksums() -> list[dict]:
         checksums.append({file : genChecksum(outputFolder+file)})
     return checksums
 
+
+
 def run(folder) -> None :
     init(folder)
     repository.active_branch.checkout()