Also a rebuild command includes a clean of the project, since build command does not ?
You have identified the fundamental difference.
Build will look at the files that have been modified since the last successful compile and link and just compile those and then link the result.
Rebuild will recompile everything.
Strictly speaking it might be different to a clean (which removes the intermediate and output files) and build and just recompile everything, but the result should be the same. However, there may be cases that fail (see Femaref's comment).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…