Projected effects of climate change on animal distributions primarily focus on consequences of temperature and largely ignore impacts of altered precipitation. While much evidence supports temperature-driven range shifts, there is substantial heterogeneity in species' responses that remains poorly understood. We resampled breeding ranges of birds across three elevational transects in the Sierra Nevada Mountains, USA, that were extensively surveyed in the early 20th century. Presence–absence comparisons were made at 77 sites and occupancy models were used to separate significant range shifts from artifacts of false absences. Over the past century, rising temperature pushed species upslope while increased precipitation pulled them downslope, resulting in range shifts that were heterogeneous within species and among regions. While 84% of species shifted their elevational distribution, only 51% of upper or lower range boundary shifts were upslope. By comparison, 82% of range shifts were in a direction predicted by changes in either temperature or precipitation. Species were significantly more likely to shift elevational ranges than their ecological counterparts if they had small clutch sizes, defended all-purpose territories, and were year-round residents, results that were in opposition to a priori predictions from dispersal-related hypotheses. Our results illustrate the complex interplay between species-specific and region-specific factors that structure patterns of breeding range change over long time periods. Future projections of increasing temperature and highly variable precipitation regimes create a strong potential for heterogeneous responses by species at range margins.