git stash та git pull


87

Я новачок у Git і використовую плагін EGit eclipse для фіксації.

Я змінив декілька файлів і зафіксував зміни, а потім зробив це git pullв командному рядку, який витягнув усі останні коміти. Тоді я зробив Apply stashed changesз EGit. Тепер він застосував мої зміни, і зміни, витягнуті з останнього коміту схованих файлів, вийшли. Я не впевнений, чому він не запитував мене про конфлікти злиття, а також змінив мої зміни та втратив попередні зміни комітів.

Як отримати ці зміни?


Це не звучить правдоподібно. Застосування схованки або вносить суперечливі зміни, або викликає конфлікти злиття. Думаю, ви забули щось згадати. Крім того, ви можете повторити свої кроки, швидше за все, ваш схованка все ще є у списку, використовуйте, git stash listщоб показати його.
кан

Відповіді:


207

Коли у вас є зміни на вашій робочій копії, з командного рядка виконайте:

git stash 

Це збереже ваші зміни та очистить ваш звіт про стан

git pull

Це призведе до змін із гілки вище за течією. Переконайтеся, що у звіті написано перемотування вперед. Якщо цього не сталося, ви, мабуть, робите ненавмисне об’єднання

git stash pop

Це застосує сховані зміни назад до робочої копії та видалить зміни зі схованки, якщо у вас не виникнуть конфлікти. У разі конфлікту вони залишатимуться в запасі, щоб ви могли почати спочатку, якщо це потрібно.

якщо вам потрібно побачити, що є у вас в схованці

git stash list

@java_newbie, Якщо ви хочете зробити це за допомогою схованки і витягнути ні, немає можливості. Але ви можете досягти такого ж результату за допомогою перебазування. Команда 'git rebase origin / <назва гілки вище' 'повинна робити те саме.
yilmazhuseyin

5
Я думаю, це зробить це:git stash && git pull && git stash pop
Фабріс Кабонго

@yilmazhuseyin Що ви маєте на увазі під "однаковим результатом" Чи можете ви дати анекдот, якщо можете? Ви мали на увазі git rebase origin/master, що дасть такий самий результат, як git stash; git pull; git stash pop?
nehem

8
Якщо ви використовуєте Git v2.9.0 або пізнішу версію, спробуйте git pull --rebase --autostash. FYI
momocow

1
Хто --autostashзавжди працює? Наприклад, якщо у мене є файли, які не відстежуються, і які вже частково перебувають у Git?
qräbnö
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.