git push
doesn't mix (merge in git-speak) anything. It takes your local copy, and tells the remote side that this is now the current version. The old version will still be available using its commit ID, or you can create a tag or branch to refer to it.
git log
will show you all previous versions of your repo.
git commit -m "Old stuff"
(change loads of files)
git commit -m "New changes"
git log --oneline
10a3fe2 New changes
7f0ceaa Old stuff
You can get back to any old committed version of your code with git checkout
:
git checkout 7f0ceaa
And back to the current version with
git checkout master