diff --git a/gmakefile.test b/gmakefile.test
index 35bcddc250d..7885495f1fb 100644
--- a/gmakefile.test
+++ b/gmakefile.test
@@ -282,6 +282,9 @@ else ifdef searchin
   TESTTARGETS := $(foreach v,$(alltesttargets),$(if $(findstring $(searchin),$(v)),$(v)))
 else ifdef argsearch
   TESTTARGETS := $(foreach v,$(alltesttargets),$(if $(findstring $(argsearch),$($(v)_ARGS)),$(v)))
+else ifdef since
+  files=$(shell git diff $(since) --name-only | tr ' ' '\n' | grep -e \.F90 -e \.cxx -e \.c | grep -e tests -e tutorials | grep -v output | sed s'?^src/??'g | sed -e s'?\.F90??'g -e s'?\.cxx??'g -e s'?\.c??'g  | sed s'?/?_?'g | sed s'?tests_?tests-?'g | sed s'?tutorials_?tutorials-?'g | sed s'?$$?_?'g)
+  TESTTARGETS := $(foreach f,$(files),$(foreach v,$(alltesttargets),$(if $(findstring $(f),$(v)),$(v))))
 else ifdef globsearch
   TESTTARGETS := $(shell $(PYTHON) config/query_tests.py 'name' '$(globsearch)')
 else ifdef test-fail
