diff --git a/build_deb.sh b/build_deb.sh
index 08b4e26a6895e33ba628335234605c6a2a440095..e4be9d1ea3c1136090b75e1731569a3f810ec4a2 100755
--- a/build_deb.sh
+++ b/build_deb.sh
@@ -71,27 +71,35 @@ function git_kernel {
 		fi
 
 		cd ${DIR}/KERNEL/
+		#So we are now going to assume the worst, and create a new master branch
+		git am --abort || echo "git tree is clean..."
+		git add .
+		git commit --allow-empty -a -m 'empty cleanup commit'
+
+		git checkout origin/master -b tmp-master
+		git branch -D master &>/dev/null || true
+
+		git checkout origin/master -b master
+		git branch -D tmp-master &>/dev/null || true
 
-		git reset --hard
-		git checkout master -f
 		git pull
 
 		if [ ! "${LATEST_GIT}" ] ; then
 			if [ "${RC_PATCH}" ] ; then
 				git tag | grep v${RC_KERNEL}${RC_PATCH} || git_kernel_torvalds
-				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} || true
+				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${RC_KERNEL}${RC_PATCH} -b v${RC_KERNEL}${RC_PATCH}-${BUILD}
 			elif [ "${STABLE_PATCH}" ] ; then
 				git tag | grep v${KERNEL_REL}.${STABLE_PATCH} || git_kernel_stable
-				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} || true
+				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL}.${STABLE_PATCH} -b v${KERNEL_REL}.${STABLE_PATCH}-${BUILD}
 			else
 				git tag | grep v${KERNEL_REL} | grep -v rc || git_kernel_torvalds
-				git branch -D v${KERNEL_REL}-${BUILD} || true
+				git branch -D v${KERNEL_REL}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL} -b v${KERNEL_REL}-${BUILD}
 			fi
 		else
-			git branch -D top-of-tree || true
+			git branch -D top-of-tree &>/dev/null || true
 			git checkout v${KERNEL_REL} -b top-of-tree
 			git describe
 			git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master || true
diff --git a/build_kernel.sh b/build_kernel.sh
index a60b41cfb09bfbd330381db453ae33628711df23..a62c6845b3bceaccf6ba22ad9cd40863adad84b1 100755
--- a/build_kernel.sh
+++ b/build_kernel.sh
@@ -71,27 +71,35 @@ function git_kernel {
 		fi
 
 		cd ${DIR}/KERNEL/
+		#So we are now going to assume the worst, and create a new master branch
+		git am --abort || echo "git tree is clean..."
+		git add .
+		git commit --allow-empty -a -m 'empty cleanup commit'
+
+		git checkout origin/master -b tmp-master
+		git branch -D master &>/dev/null || true
+
+		git checkout origin/master -b master
+		git branch -D tmp-master &>/dev/null || true
 
-		git reset --hard
-		git checkout master -f
 		git pull
 
 		if [ ! "${LATEST_GIT}" ] ; then
 			if [ "${RC_PATCH}" ] ; then
 				git tag | grep v${RC_KERNEL}${RC_PATCH} || git_kernel_torvalds
-				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} || true
+				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${RC_KERNEL}${RC_PATCH} -b v${RC_KERNEL}${RC_PATCH}-${BUILD}
 			elif [ "${STABLE_PATCH}" ] ; then
 				git tag | grep v${KERNEL_REL}.${STABLE_PATCH} || git_kernel_stable
-				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} || true
+				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL}.${STABLE_PATCH} -b v${KERNEL_REL}.${STABLE_PATCH}-${BUILD}
 			else
 				git tag | grep v${KERNEL_REL} | grep -v rc || git_kernel_torvalds
-				git branch -D v${KERNEL_REL}-${BUILD} || true
+				git branch -D v${KERNEL_REL}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL} -b v${KERNEL_REL}-${BUILD}
 			fi
 		else
-			git branch -D top-of-tree || true
+			git branch -D top-of-tree &>/dev/null || true
 			git checkout v${KERNEL_REL} -b top-of-tree
 			git describe
 			git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master || true
diff --git a/build_mainline.sh b/build_mainline.sh
index 22c33ad2beab936c1c45efa984a076d85c6c67cc..80f69b6037840dc4e25a119ab58730868900fba7 100755
--- a/build_mainline.sh
+++ b/build_mainline.sh
@@ -71,12 +71,20 @@ function git_kernel {
 		fi
 
 		cd ${DIR}/KERNEL/
+		#So we are now going to assume the worst, and create a new master branch
+		git am --abort || echo "git tree is clean..."
+		git add .
+		git commit --allow-empty -a -m 'empty cleanup commit'
+
+		git checkout origin/master -b tmp-master
+		git branch -D master &>/dev/null || true
+
+		git checkout origin/master -b master
+		git branch -D tmp-master &>/dev/null || true
 
-		git reset --hard
-		git checkout master -f
 		git pull
 
-		git branch -D top-of-tree || true
+		git branch -D top-of-tree &>/dev/null || true
 		git checkout v${KERNEL_REL} -b top-of-tree
 		git describe
 		git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master || true
diff --git a/tools/rebuild.sh b/tools/rebuild.sh
index 69a3d6f8dad17c4a9bdda4040a49aa1f3c226fa7..c83fe6aa4945733dabd209244af83c58f643d9e8 100755
--- a/tools/rebuild.sh
+++ b/tools/rebuild.sh
@@ -71,27 +71,35 @@ function git_kernel {
 		fi
 
 		cd ${DIR}/KERNEL/
+		#So we are now going to assume the worst, and create a new master branch
+		git am --abort || echo "git tree is clean..."
+		git add .
+		git commit --allow-empty -a -m 'empty cleanup commit'
+
+		git checkout origin/master -b tmp-master
+		git branch -D master &>/dev/null || true
+
+		git checkout origin/master -b master
+		git branch -D tmp-master &>/dev/null || true
 
-		git reset --hard
-		git checkout master -f
 		git pull
 
 		if [ ! "${LATEST_GIT}" ] ; then
 			if [ "${RC_PATCH}" ] ; then
 				git tag | grep v${RC_KERNEL}${RC_PATCH} || git_kernel_torvalds
-				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} || true
+				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${RC_KERNEL}${RC_PATCH} -b v${RC_KERNEL}${RC_PATCH}-${BUILD}
 			elif [ "${STABLE_PATCH}" ] ; then
 				git tag | grep v${KERNEL_REL}.${STABLE_PATCH} || git_kernel_stable
-				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} || true
+				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL}.${STABLE_PATCH} -b v${KERNEL_REL}.${STABLE_PATCH}-${BUILD}
 			else
 				git tag | grep v${KERNEL_REL} | grep -v rc || git_kernel_torvalds
-				git branch -D v${KERNEL_REL}-${BUILD} || true
+				git branch -D v${KERNEL_REL}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL} -b v${KERNEL_REL}-${BUILD}
 			fi
 		else
-			git branch -D top-of-tree || true
+			git branch -D top-of-tree &>/dev/null || true
 			git checkout v${KERNEL_REL} -b top-of-tree
 			git describe
 			git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master || true
diff --git a/tools/rebuild_deb.sh b/tools/rebuild_deb.sh
index a286c88a3de6496efbf43982298d63c22459e566..acca2964cbf739a3788a89335d2934499d20f443 100755
--- a/tools/rebuild_deb.sh
+++ b/tools/rebuild_deb.sh
@@ -71,27 +71,35 @@ function git_kernel {
 		fi
 
 		cd ${DIR}/KERNEL/
+		#So we are now going to assume the worst, and create a new master branch
+		git am --abort || echo "git tree is clean..."
+		git add .
+		git commit --allow-empty -a -m 'empty cleanup commit'
+
+		git checkout origin/master -b tmp-master
+		git branch -D master &>/dev/null || true
+
+		git checkout origin/master -b master
+		git branch -D tmp-master &>/dev/null || true
 
-		git reset --hard
-		git checkout master -f
 		git pull
 
 		if [ ! "${LATEST_GIT}" ] ; then
 			if [ "${RC_PATCH}" ] ; then
 				git tag | grep v${RC_KERNEL}${RC_PATCH} || git_kernel_torvalds
-				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} || true
+				git branch -D v${RC_KERNEL}${RC_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${RC_KERNEL}${RC_PATCH} -b v${RC_KERNEL}${RC_PATCH}-${BUILD}
 			elif [ "${STABLE_PATCH}" ] ; then
 				git tag | grep v${KERNEL_REL}.${STABLE_PATCH} || git_kernel_stable
-				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} || true
+				git branch -D v${KERNEL_REL}.${STABLE_PATCH}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL}.${STABLE_PATCH} -b v${KERNEL_REL}.${STABLE_PATCH}-${BUILD}
 			else
 				git tag | grep v${KERNEL_REL} | grep -v rc || git_kernel_torvalds
-				git branch -D v${KERNEL_REL}-${BUILD} || true
+				git branch -D v${KERNEL_REL}-${BUILD} &>/dev/null || true
 				git checkout v${KERNEL_REL} -b v${KERNEL_REL}-${BUILD}
 			fi
 		else
-			git branch -D top-of-tree || true
+			git branch -D top-of-tree &>/dev/null || true
 			git checkout v${KERNEL_REL} -b top-of-tree
 			git describe
 			git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master || true