I love Django, perhaps mostly because I love Python but Django's ORM is lovable in its own right. Using it, fronted by Nginx, I've built sites ranging from the simple (like mine here) to the highly complex such as the (team built) liquid site.
I'm still bugged by the complexity of using git subtrees to effectively handle development on main and sub projects. In my case I have several 'main' projects that are Django sites which share a functioning but actively developed app. I can work with the git subtree solution but I constantly have to remind myself of the required commands for merging and updating.
I have a Django app which is proving very useful so I need to split it out into its own repository so that I can share it between multiple projects. As the client (CCCS), generously and sensibly keep their non sensitive project code as open source, I can present this as a real example. The app is the 'documents' app which manages an S3 repository containing many thousands of documents.
Undoing git commits is almost always a bad idea. The only time you should contemplate really undoing a commit is if the commit contains information that should never ever be seen in the repository. For example if you accidentally commit a file containing sensitive password information.
When developing web services and their related web sites, transfering code is easy. It is normally handled via git which automatically creates patches behind the scenes making the process fast and efficient.
Australia: 07 3103 2894
International: +61 410 545 357