anchor.diff:  ## <a id="overview"></a> Overview
   
   The cf CLI command `cf push` pushes apps to <%= vars.product_short %>.
  -The `cf push` command uses flags and helper files that determine the following:
  -
  -* How the pushed app runs, including its route (URL), instance count, and memory limits.
  -* How the push process works: whether it's configured with a manifest, runs a startup script, or limits files uploaded to the Cloud Controller.
  -
  -To push an app using `cf push`, do the following:
  -
  -1. [Determine `cf push` Options](#options)
  -1. [Push the App](#push)
  -1. [(Optional) Configure App Services](#services)
  +There are two main ways to run the `cf push` command:
  +
  +- Run `cf push APP-NAME` to push an app the easiest way, using default settings.
  +- Run the `cf push` command with flags and helper files to customize:
  +    - How the pushed app runs, including its route (URL), instance count, and memory limits.
  +    - How the push process works: whether it's configured with a manifest, runs a startup script, or limits files uploaded to the Cloud Controller.
  +
  +The [Push with Defaults](#default-push) and [Push with Custom Settings](#custom-push) sections below detail both of these options.
   
   For an explanation of what <%= vars.product_short %> does when you run `cf push`, see [How Apps are Staged](../../concepts/how-applications-are-staged.html).
   
  
positive.code: * All required app resources are uploaded.
  For example, you may need to include a database driver.
  
  * Your app can access an instance of every service that it needs, because the service instance is running in, or shared with, the app's space. See [Determine the Org and Space](#space).
  
  * You have your target and credentials:
    - The API endpoint for your <%= vars.product_short %> installation. Also known as the target
  URL, this is <%=vars.api_endpoint%>.
    - Your username and password for your <%= vars.product_short %> installation.
  
  ## <a id='options'></a>Determine cf push Options
  
  Before you push an app, you need to collect basic field values and make some choices.
  
  ### <a id='basic'></a>Collect Basic Field Values
  
  Before you push an app, you need values for the following fields:
  
  * **Name**: You can use any series of alphanumeric characters as the name of your app.
  * **Instances**: Generally speaking, the more app instances you run, the less
  
negative.code:   - [Spring](../../buildpacks/java/configuring-service-connections/spring-service-bindings.html)
    - [Grails](../../buildpacks/java/configuring-service-connections/grails-service-bindings.html)
  
  ## <a id='updates'></a> App Updates and Downtime
  
  When you push an app that is already running, <%= vars.product_short %> stops all existing instances of that app. Users who try to access the app get a "404 Not Found" message while `cf push` runs.
  
  With some app updates, old and new versions of your code should never run at the same time. A worst-case example is if your app update migrates a database schema, causing old app instances to fail and lose user data.  To prevent this, you need to stop all running instances of your app before you push the new version.
  
  When old and new versions of your app can run simultaneously, you can avoid app downtime by using the [blue-green method](./blue-green.html) to swap routes between app versions running in parallel.
  
  
  ## <a id='troubleshoot-push'></a>Troubleshoot App Push Problems
  
  If your app does not start on <%= vars.product_short %>, first ensure that the app can run locally.
  