diff --git a/global-cli/index.js b/global-cli/index.js
index d1319aba06f099c61d3b6ae99097fb7981588d2c..e8dc5a7184a9f9a765f0d39b2806dbc0da4ce21b 100644
--- a/global-cli/index.js
+++ b/global-cli/index.js
@@ -41,6 +41,7 @@ var spawn = require('cross-spawn');
 var chalk = require('chalk');
 var semver = require('semver');
 var argv = require('minimist')(process.argv.slice(2));
+var pathExists = require('path-exists');
 
 /**
  * Arguments:
@@ -67,21 +68,20 @@ if (commands.length === 0) {
 createApp(commands[0], argv.verbose, argv['scripts-version']);
 
 function createApp(name, verbose, version) {
-  if (fs.existsSync(name)) {
-    console.log('The directory `' + name + '` already exists. Aborting.');
+  var root = path.resolve(name);
+  if (!pathExists.sync(name)) {
+    fs.mkdirSync(root);
+  } else if (!isGitHubBoilerplate(root)) {
+    console.log('The directory `' + name + '` contains file(s) that could conflict. Aborting.');
     process.exit(1);
   }
 
-  var root = path.resolve(name);
   var appName = path.basename(root);
-
   console.log(
     'Creating a new React app in ' + root + '.'
   );
   console.log();
 
-  fs.mkdirSync(root);
-
   var packageJson = {
     name: appName,
     version: '0.0.1',
@@ -166,3 +166,15 @@ function checkNodeVersion() {
     process.exit(1);
   }
 }
+
+// Check if GitHub boilerplate compatible
+// https://github.com/facebookincubator/create-react-app/pull/368#issuecomment-237875655
+function isGitHubBoilerplate(root) {
+  var validFiles = [
+    '.DS_Store', 'Thumbs.db', '.git', '.gitignore', 'README.md', 'LICENSE'
+  ];
+  return fs.readdirSync(root)
+    .every(function(file) {
+      return validFiles.indexOf(file) >= 0;
+    });
+}
diff --git a/global-cli/package.json b/global-cli/package.json
index 3e98c4c939ad66e10a202e3bccc369bedf3800a7..8d038be67839b88e8feca7452c1f0ad3d6c4aab2 100644
--- a/global-cli/package.json
+++ b/global-cli/package.json
@@ -20,6 +20,7 @@
     "chalk": "^1.1.1",
     "cross-spawn": "^4.0.0",
     "minimist": "^1.2.0",
+    "path-exists": "^3.0.0",
     "semver": "^5.0.3"
   }
 }
diff --git a/package.json b/package.json
index bf3d853af2a5d05a6732dea6bed11eb400d877ce..accba6a051f05a9285d146ea5e09b51a033534e2 100644
--- a/package.json
+++ b/package.json
@@ -66,6 +66,7 @@
     "jest": "14.1.0",
     "json-loader": "0.5.4",
     "opn": "4.0.2",
+    "path-exists": "^3.0.0",
     "postcss-loader": "0.9.1",
     "promise": "7.1.1",
     "recursive-readdir": "2.0.0",
diff --git a/scripts/init.js b/scripts/init.js
index 50cc9d25ba783486380be7bd0ebdfe9a66128357..074fe428aef997bf9e93d3d09ba0b9594bb33db9 100644
--- a/scripts/init.js
+++ b/scripts/init.js
@@ -10,6 +10,8 @@
 var fs = require('fs-extra');
 var path = require('path');
 var spawn = require('cross-spawn');
+var pathExists = require('path-exists');
+var chalk = require('chalk');
 
 module.exports = function(appPath, appName, verbose, originalDirectory) {
   var ownPath = path.join(appPath, 'node_modules', 'react-scripts');
@@ -43,12 +45,28 @@ module.exports = function(appPath, appName, verbose, originalDirectory) {
     JSON.stringify(appPackage, null, 2)
   );
 
+  var readmeExists = pathExists.sync(path.join(appPath, 'README.md'));
+  if (readmeExists) {
+    fs.renameSync(path.join(appPath, 'README.md'), path.join(appPath, 'README.old.md'));
+  }
+
   // Copy the files for the user
   fs.copySync(path.join(ownPath, 'template'), appPath);
 
   // Rename gitignore after the fact to prevent npm from renaming it to .npmignore
   // See: https://github.com/npm/npm/issues/1862
-  fs.move(path.join(appPath, 'gitignore'), path.join(appPath, '.gitignore'), []);
+  fs.move(path.join(appPath, 'gitignore'), path.join(appPath, '.gitignore'), [], function (err) {
+    if (err) {
+      // Append if there's already a `.gitignore` file there
+      if (err.code === 'EEXIST') {
+        var data = fs.readFileSync(path.join(appPath, 'gitignore'));
+        fs.appendFileSync(path.join(appPath, '.gitignore'), data);
+        fs.unlinkSync(path.join(appPath, 'gitignore'));
+      } else {
+        throw err;
+      }
+    }
+  });
 
   // Run another npm install for react and react-dom
   console.log('Installing react and react-dom from npm...');
@@ -88,6 +106,10 @@ module.exports = function(appPath, appName, verbose, originalDirectory) {
     console.log();
     console.log('  cd', cdpath);
     console.log('  npm start');
+    if (readmeExists) {
+      console.log();
+      console.log(chalk.yellow('You had a `README.md` file, we renamed it to `README.old.md`'));
+    }
     console.log();
     console.log('Happy hacking!');
   });