The easiest way to send configuration changes from one organization to another is to use a change set. To send customizations from your current organization to another organization, you create an outbound change set. Once you send the change set, the receiving organization sees it as an inbound change set.
Some components are dependent on other components. For example, the custom fields of a custom object rely on the existence of that custom object. If you try to migrate those custom fields to an organization that doesn’t contain the custom object upon which they’re dependent, the deployment will fail. When you create a change set, it’s easy to view and add the dependencies to ensure all the necessary components are migrated.
And also you can use data loader to migrate the data make sure that the customized objects and fields meta data should be same in two organization.
it's important to prepare the Target Instance for the new data.
- Mapping between the 2 instances requires all fields from exported org are established in the new target instance. (The customer can generate a schema configuration export by using ANT or Eclipse with the Force.com plug-in. Additionally there are some AppExchange packages that can generate that as well.)
- Other customization of the Target instance, Record Types, Page Layouts, etc.
- Developing Sharing Model to accommodate new user groups if necessary: Profiles, Roles and Sharing Rules
- Reviewing Ownership Rules
- Ensuring all required data points are captured
- Testing migration prior to mass uploads
- Completing Data Validation once migration is complete
But here you can’t migrate history, all the type of chatter feeds, cannot create Libraries from DL.