Magic states have been widely studied in recent years as resource states that help quantum computers achieve fault-tolerant universal quantum computing. The fault-tolerant quantum computing requires fault-tolerant implementation of a set of universal logical gates. Stabilizer code, as a commonly used error correcting code with good properties, can apply the Clifford gates transversally which is fault tolerant. But only Clifford gates can not realize universal computation. Magic states are introduced to construct non-Clifford gates that combine with Clifford operations to achieve universal quantum computing. Since the preparation of quantum states is inevitably accompanied by noise, preparing the magic state with high fidelity and low overhead is the crucial problem to realizing universal quantum computation. In this paper, we survey the related literature in the past 20 years and introduce the common types of magic states, the protocols to obtain high-fidelity magic states, and overhead analysis for these protocols. Finally, we discuss the future directions of this field.