After a lot of digging i managed to find the answer on OpenShift forums and stack...not sure how it didnt pop out sooner.
Runtime modifications will modify your code on the gear. Since those changes bypass git, they won't be version controlled. Your local repo will be out of synch after those runtime changes so it is recommended to check those changes into your repo and push them back to gear so as to track those changes.
Long story short: Files uploaded to server outside commits/push arent monitored by git and they get overridden by git afterwards.
Solution:
1) If you are uploading files to lets say uploads folder, ssh into your app, and do the following :
ln -sf $OPENSHIFT_DATA_DIR/uploads $OPENSHIFT_REPO_DIR/php/uploads
also be sure to make uploads folder with mkdir before that.
This will make that directory publicly accessible, and since data directory isnt git controlled it makes the data safe from push.
2)
0) Ensure that all your local changes are in synch 1) Make changes to your app at runtime (like the install a theme) 2) take a snapshot of your app with "rhc app snapshot save -a {appName}" 3) Overwrite all your local repo files with the files in the snapshot.tar.gz (everything in app_root/repo/* 4) run "git add ." on your local repo 5) then run "git commit -a -m "upgrade to 3.4" and "git push"
More info:
https://www.openshift.com/forums/openshift/one-newbie-question
https://www.openshift.com/forums/openshift/php-uploads
https://www.openshift.com/page/openshift-environment-variables