Never store "derived" files in version control. Check in only source files, makefiles, etc.; the results of the build process (.o files, executable files, Java .class files, etc.) should not be under version control.

Check in often. Any time you make any improvement to any code, check it back in ASAP. If it's untested or has any other potential problems, you can just make a note of them in the comment when you check it in.

Don't use any weird characters in file names. That includes umlauts, accented characters, etc., as well as any space characters, Unix-unfriendly punctuation characters, etc.

More advice: