diff --git a/core/lib/Drupal/Core/Config/DrupalConfig.php b/core/lib/Drupal/Core/Config/DrupalConfig.php
index 54397e7..20ae021 100644
--- a/core/lib/Drupal/Core/Config/DrupalConfig.php
+++ b/core/lib/Drupal/Core/Config/DrupalConfig.php
@@ -81,17 +81,21 @@ class DrupalConfig {
    *   The data that was requested.
    */
   public function get($key = '') {
+    global $conf;
+
+    $name = $this->_verifiedStorage->getName();
+    $merged_data = drupal_array_merge_deep($this->data, isset($conf[$name]) ? $conf[$name] : array());
     if (empty($key)) {
-      return $this->data;
+      return $merged_data;
     }
     else {
       $parts = explode('.', $key);
       if (count($parts) == 1) {
-        return isset($this->data[$key]) ? $this->data[$key] : NULL;
+        return isset($merged_data[$key]) ? $merged_data[$key] : NULL;
       }
       else {
         $key_exists = NULL;
-        $value = drupal_array_get_nested_value($this->data, $parts, $key_exists);
+        $value = drupal_array_get_nested_value($merged_data, $parts, $key_exists);
         return $key_exists ? $value : NULL;
       }
     }
diff --git a/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorage.php b/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorage.php
index ca37cdd..d1d2a16 100644
--- a/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorage.php
+++ b/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorage.php
@@ -99,4 +99,12 @@ abstract class DrupalConfigVerifiedStorage implements DrupalConfigVerifiedStorag
     $this->deleteFromActive();
     $this->deleteFile();
   }
+
+  /**
+   * Implements DrupalConfigVerifiedStorageInterface::getName().
+   */
+  public function getName() {
+    return $this->name;
+  }
 }
+
diff --git a/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorageInterface.php b/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorageInterface.php
index 2fdce76..78ae210 100644
--- a/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorageInterface.php
+++ b/core/lib/Drupal/Core/Config/DrupalConfigVerifiedStorageInterface.php
@@ -81,4 +81,10 @@ interface DrupalConfigVerifiedStorageInterface {
    *   @todo
    */
   static function getNamesWithPrefix($prefix);
+
+  /**
+   * Gets the name of this object.
+   */
+  function getName();
 }
+
diff --git a/core/modules/config/config.test b/core/modules/config/config.test
index 395a3a9..f64ff92 100644
--- a/core/modules/config/config.test
+++ b/core/modules/config/config.test
@@ -268,3 +268,38 @@ class ConfigFileContentTestCase extends DrupalWebTestCase {
     // Attempt to delete non-existing configuration.
   }
 }
+
+  /**
+   * Tests configuration overriding from settings.php.
+   */
+class ConfOverrideTestCase extends DrupalWebTestCase {
+  protected $profile = 'testing';
+  protected $testContent = 'Good morning, Denver!';
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Configuration overrides',
+      'description' => 'Tests configuration overrides through settings.php.',
+      'group' => 'Configuration',
+    );
+  }
+
+  /**
+   * Test configuration override.
+   */
+  function testConfigurationOverride() {
+    global $conf;
+
+    $conf['system.performance']['cache'] = $this->testContent;
+    $config = config('system.performance');
+    $this->assertEqual($config->get('cache'), $conf['system.performance']['cache']);
+  }
+
+  /**
+   * Tests if configuration override is cleared.
+   */
+  function testConfigurationNotOverride() {
+    $config = config('system.performance');
+    $this->assertNotEqual($config->get('cache'), $this->testContent);
+  }
+}
