diff --git a/packages/react-scripts/scripts/init.js b/packages/react-scripts/scripts/init.js
index 3347a37f4f3ff8952f62f0fa978e6806c53e7737..ac695d167d9c56b5f028a3366bbaac79b713a77a 100644
--- a/packages/react-scripts/scripts/init.js
+++ b/packages/react-scripts/scripts/init.js
@@ -22,7 +22,7 @@ const spawn = require('react-dev-utils/crossSpawn');
 const { defaultBrowsers } = require('react-dev-utils/browsersHelper');
 const os = require('os');
 
-function insideGitRepository() {
+function isInGitRepository() {
   try {
     execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
     return true;
@@ -31,7 +31,7 @@ function insideGitRepository() {
   }
 }
 
-function insideMercurialRepository() {
+function isInMercurialRepository() {
   try {
     execSync('hg --cwd . root', { stdio: 'ignore' });
     return true;
@@ -40,22 +40,36 @@ function insideMercurialRepository() {
   }
 }
 
-function tryGitInit() {
+function tryGitInit(appPath) {
+  let didInit = false;
   try {
     execSync('git --version', { stdio: 'ignore' });
-
-    if (insideGitRepository() || insideMercurialRepository()) {
+    if (isInGitRepository() || isInMercurialRepository()) {
       return false;
     }
 
     execSync('git init', { stdio: 'ignore' });
+    didInit = true;
+
     execSync('git add -A', { stdio: 'ignore' });
     execSync('git commit -m "Initial commit from Create React App"', {
       stdio: 'ignore',
     });
-
     return true;
   } catch (e) {
+    if (didInit) {
+      // If we successfully initialized but couldn't commit,
+      // maybe the commit author config is not set.
+      // In the future, we might supply our own committer
+      // like Ember CLI does, but for now, let's just
+      // remove the Git files to avoid a half-done state.
+      try {
+        // unlinkSync() doesn't work on directories.
+        fs.removeSync(path.join(appPath, '.git'));
+      } catch (removeErr) {
+        // Ignore.
+      }
+    }
     return false;
   }
 }
@@ -172,7 +186,7 @@ module.exports = function(
     }
   }
 
-  if (tryGitInit()) {
+  if (tryGitInit(appPath)) {
     console.log();
     console.log('Initialized a git repository.');
   }
diff --git a/tasks/e2e-kitchensink.sh b/tasks/e2e-kitchensink.sh
index b849c36794433810ec5b27fe59c887d151e03f71..a1e1ccc9d42b17e86e57e7df0dac7635599f6ed1 100755
--- a/tasks/e2e-kitchensink.sh
+++ b/tasks/e2e-kitchensink.sh
@@ -174,12 +174,6 @@ rm .babelrc
 # Finally, let's check that everything still works after ejecting.
 # ******************************************************************************
 
-# Commiting changes
-git config user.email "you@example.com"
-git config user.name "Your Name"
-git add .
-git commit -m "Before npm run eject"
-
 # Eject...
 echo yes | npm run eject