Some GPS receivers use a phase lock loop to lock onto a signal from a GPS satellite, others use a frequency lock loop, and yet others use a hybrid of the two. Phase lock loops and frequency lock loops are the two of leading contenders for locking onto a signal whose frequency changes slightly due to changes in the incoming signal and due to using an imperfect oscillator in the receiver.
To be commercially viable, GPS receivers almost always use inexpensive, off-the-shelf oscillators, which means the phase lock loop / frequency lock loop has to contend not only with the Doppler shift in the incoming satellite signal, but also with the inherent imperfectness of the oscillator. Phase lock loops and frequency lock loops use something akin to a Kalman filter to adjust oscillator behavior based on phase error or frequency error.
Locking onto the carrier signal is just the start. The next step is bit synchronization, which converts the analog signal embedded in the carrier signal into a bit stream. The next step after that is frame synchronization, which uses a regularly repeated pseudo noise signal embedded in the bit stream to identify the start of a transmission frame. It's only after signal lock, bit sync lock, and frame sync lock that a receiver of a satellite signal can make sense out of the incoming signal.