FTP? How quaint.
I'd be editing a local copy of the files, initially testing changes via localhost or similar, then committing those changes to a local Git repository and pushing to remote, or else committing directly to a remote Subversion repository. The remote repository also doubles as the test or dev server for further testing. Once tests were complete, the code would then be copied to the live server.
With version control in place, all historical changes can be reviewed along with who made those changes.