Git stash pop - потребує злиття, не в змозі оновити індекс


116

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

app.coffee: needs merge
unable to refresh index

Хтось знає, як це вирішити?

ФІКСОВАНО!

Виявляється, актуальною проблемою був невирішений конфлікт злиття із злиттям, НЕ, що приховування призведе до конфлікту злиття.

Розв’язання: Введіть конфліктний файл.


6
Цікаво, що прийнята відповідь є складною, а фактичне рішення є досить простим: вам навіть не потрібно вводити конфліктний файл, а додавати його.
Javi V

3
Додайте свою відповідь як відповідь не в питанні.
Чорний

Відповіді:


67

Спочатку перевірте git status.
Як згадує ОП,

Актуальною проблемою був невирішений конфлікт злиття з об'єднанням, НЕ, щоб приховування спричинило конфлікт злиття.

Саме тут git statusбуло б згадати цей файл як " both modified"

Розв’язання: Введіть конфліктний файл.


Подібну ситуацію ви можете знайти 4 дні тому під час написання цієї відповіді (13 березня 2012 р.) За допомогою цього повідомлення: " " Перетягнути неможливо, оскільки у вас є незакріплені файли ":

julita@yulys:~/GNOME/baobab/help/C$ git stash pop
help/C/scan-remote.page: needs merge
unable to refresh index

Що ви зробили, щоб виправити конфлікт злиття (відредагувавши правильний файл та вчинивши його):
Див. " Як виправити конфлікти злиття в Git? "

Автор публікації блогу:

julita@yulys:~/GNOME/baobab/help/C$ git reset --hard origin/mallard-documentation
HEAD is now at ff2e1e2 Add more steps for optional information for scanning.

Тобто переривання поточного злиття повністю, що дозволяє git stash popзастосовувати.
Див. " Скасування злиття в Git ".

Це два варіанти.


1
Іноді трапляється і ми знаходимось в іншій галузі. Наприклад, у мене є гілка А та внесла деякі зміни, перейшла до гілки В та внесла зміни та вчинила їх. Тепер я хочу перейти у відділення A, але забув перевірити A і намагався застосувати скриньку. У цьому випадку це також дає те саме питання. Я зіткнувся з цим питанням у наведеному вище випадку.
Капіль Верма

Я все зробив, але 'git bash pop' повертає ці конфлікти. Я не бачу, чому мені доведеться все одно робити зобов’язання, коли я не хочу вносити зміни в поточний бах. Я просто хочу повернутися до прихованої гілки.
Філіп Рего

@PhilipRego git bash pop? чи git stash pop? Спробуйте робити витягаєте тайник замість того , щоб використовувати Git тайник: stackoverflow.com/a/16625128/6309
VonC

Вибачте, означало "git stash pop". Я вже кинув приховування, але спробую, що наступного разу у мене буде це питання. Дякую
Філіп Рего

14

У мене виникло це питання, потім було вирішено конфлікт і було зроблено git stash popще раз - відновлення тієї ж скриньки (викликаючи той самий конфлікт :-().

Що я повинен був зробити (ПОПЕРЕДЖЕННЯ: спершу створити резервну копію) - git stash dropце позбутися.


4
Це просто позбулося мого сховища. Я хотів повернутися до цього.
Філіп Рего

3
Це відповідь, яка мені була потрібна, але для інших людей, які це бачать, ви втратите свої приховані зміни. Це корисно, якщо у вас виникли проблеми з першим сховищем, але ви дійсно хочете позбутися першого сховища, щоб застосувати глибші сховані зміни другого рівня.
Корі Шнедл

8

Це набагато простіше, ніж прийнята відповідь. Тобі потрібно:

  1. Перевірте git statusі незатоптані під ним доріжки. Виправити конфлікти. Ви можете пропустити цей крок, якщо хочете зробити це пізніше.

  2. Додайте всі ці файли під нерозподіленими шляхами до індексу git add <filename>.

  3. Тепер зробіть git stash pop. Якщо у вас виникнуть конфлікти, їх знову потрібно буде вирішити.


6
Це призводить до того ж конфлікту знову і знову.
NaN

7

Ось як я вирішив проблему:

  • статус git (перегляньте суміш файлів із попереднього сховища, тягнення, приховування попсу та продовження роботи)
  • git stash (див. питання злиття потреб)
  • git add. (додайте файли, щоб моя робота локально вирішила мій об'єднаний)
  • git stash (без помилок)
  • git pull (без помилок)
  • git stash pop (без помилок і продовжуйте працювати)

1
Дякую ! це допоможе мені.
Жульєн

1
Чудово, git add .не вчиняючи проблеми для мене.
Пол Карлтон

5

Якщо у когось виникає ця проблема за межами злиття / конфлікту / дії, то це може бути файл блокування git для вашого проекту, що викликає проблему.

git reset
     fatal: Unable to create '/PATH_TO_PROJECT/.git/index.lock': File exists.
rm -f /PATH_TO_PROJECT/.git/index.lock
git reset
git stash pop

1
Вид боятися resetкоманди. Чи можете ви пояснити, чому це буде працювати?
SMBiggs

1

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

git stash branch <branch-name>

якщо ви очистите свою сховище, ви можете втратити свої зміни, і вам доведеться повторно виправити запит.


1

Потрібно додати app.coffeeдо постановки.

Зробіть, git add app.coffeeі тоді ви зможете застосувати свій приховування (після цього виконайте і натисніть).


0

Стек уже застосовано до інших файлів.

Це лише app.coffeeте, що вам доведеться злитися вручну. Після цього просто біжи

git reset

щоб не змінювати зміни та продовжувати хакнути.


0

Я зіткнувся з тим же питанням, тому що я вніс деякі зміни у своїй галузі розвитку, а потім хочу перейти до профільної гілки. тож у мене є приховані зміни

git stash

то в гілці профілю я також зробив деякі зміни, а потім хочу знову повернутися до розробки, тому мені доведеться знову сховати зміни на

 git stash

але коли я прийшов розробити філію і спробував зібрати зміни в скрині

git stash apply

тому я отримував помилку потрібно злити

щоб вирішити цю проблему спочатку я повинен перевірити скриньку

git stash list

тож він показує список скриптів у моєму випадку, було 2 схованки, ім'я зображень відображається так, як ця скришка @ {0}, приховування @ {1}

Мені потрібні зміни від скриньки @ {1}, тому коли я намагаюся отримати це за допомогою цієї команди

git stash apply stash@{1}

тому отримання помилок потребує злиття

тож тепер для вирішення цього питання перевірте стан своїх файлів

git status

тож вона давала помилку, що "обидва модифіковані", щоб вирішити цей пробіг

git add .

вона додасть відсутні файли, які були змінені, знову перевірити стан

git status 

тому тепер немає помилок, тепер можна застосувати скрипт

git stash apply stash@{1}

ви можете виконати цей процес для будь-якої кількості прихованих файлів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.