I want to have a button on order information page when clicked the same order should be repeated. How can I put the same products again in the cart or simply re-order again?
This would probably require a plugin with a controller which you could post the order id to when clicking the button. Within the controller you could then query the database to get each line item and add it to the cart within a service if it is in stock and still enabled. The final step would then be to redirect to the basket or posted url.
The docs here should help you get started: https://craftcms.com/docs/plugins/controllers
I've made a plugin to do this now and it has stock checks to display messages if the quantity has been adjusted due to availability of a variant.
Another approach here is to use MultiAdd (https://github.com/verbb/multi-add) to build a repeat order form rather than just a button to repeat the whole order.
Depends entirely on what you want, but this can be a bit more flexible as it allows them to repeat the same items but potentially change quantities or notes etc., and means you can display stock issue messages and so on before they get to the cart screen, which is perhaps handier for the customer.
It's easy to do - just loop through the old order as your're building your MultiAdd form and give each item a unique index, check for stock and display appropriate warnings at that point, etc.
(You can also use MultiAdd to create the one button approach of course, just using hidden fields instead of inputs, and that might be handy if you happen to be using MultiAdd anyway and want to keep your plugin numbers down, and/or want those stock messages on show before they go through the add to cart process).