Ось моя стратегія вирішення проблеми.
Постановка проблеми
Нам потрібно внести зміни у понад 10 файлів. Ми намагалися PULL (git pull origin master)
, але Гіт кричав:
Помилка: Ваші локальні зміни в наступні файли будуть перезаписані злиттям: Будь ласка, введіть свої зміни або схойте їх, перш ніж ви зможете об'єднатись.
Ми намагалися стратити commit
і тодіpull
, але вони теж не спрацювали.
Рішення
Ми були в брудномуНасправді стадії, тому що файли знаходилися в "Постановочній зоні" ("Staging Area"), також "Index Area", а деякі - в "Head Area", також "локальному каталозі Git". І ми хотіли витягнути зміни з сервера.
Перевірте це посилання для інформації про різні етапи Git чітко: GIT Stages
Ми виконували наступні кроки
git stash
(Це очистило наш робочий каталог. Ваші зміни зберігаються у стеку Git).
git pull origin master
(Витягніть зміни з сервера)
git stash apply
(Застосовано всі зміни зі стека)
git commit -m 'message'
(Здійснено зміни)
git push origin master
(Натиснув зміни на сервер)
git stash drop
(Падіння стека)
Давайте розберемося, коли і навіщо потрібно приховування
Якщо ви перебуваєте в брудному стані, це означає, що ви вносите зміни у свої файли, і тоді з будь-якої причини ви змушені перетягуватись або переходити до іншої гілки для якоїсь дуже нагальної роботи, тому в цей момент ви не можете витягнути або перемикайтеся, поки ви не зробите свою зміну. stash
Команда тут , як протягнути руку допомоги.
З книги ProGIT , 2-е видання:
Часто, коли ви працюєте над частиною свого проекту, речі перебувають у безладному стані, і ви хочете трохи переключити гілки, щоб працювати над чимось іншим. Проблема полягає в тому, що ви не хочете робити зобов’язання за виконану наполовину роботу, щоб пізніше повернутися до цього питання. Відповідь на це питання - команда git stash. Stashing приймає брудний стан вашого робочого каталогу - тобто ваші змінені відслідковані файли та поетапні зміни - і зберігає їх у степі незавершених змін, які ви можете будь-коли повторно застосувати.