Невозможно получить git stash - файл не сливается даже после повторных попыток и фиксации - PullRequest
0 голосов
/ 10 октября 2019

Я был в своей конкретной ветке и внес некоторые изменения - но мне сообщили, что есть изменения, которые мне нужно было выбрать из мастера.

  1. Поэтому я переключился на мастера:

    • git checkout master
    • git pull
    • git checkout my_branch
  2. Тогда я объединился:

    • git merge master
  3. Затем я попытался выдвинуть мой заначек:

    • git stash pop

Но не получилось со следующим сообщением:

Auto-merging /file1
CONFLICT (content): Merge conflict in file1
Auto-merging /file2
The stash entry is kept in case you need it again.

Итак, я слил файл - / file1, отредактировав в редакторе. Добавлен / file1 и зафиксирован

Затем я попытался открыть сундук:

  • git stash pop

Но это снова не удалось со следующим сообщением:

Auto-merging /file1
CONFLICT (content): Merge conflict in file1
Auto-merging /file2
The stash entry is kept in case you need it again.

Независимо от того, сколько раз я зафиксировал / file1 - я застрял в том же цикле.

Я также пытался разветвлять свой тайник:

  • Разрешить объединение
  • Добавить / зафиксировать все разрешенные файлы
  • Попробовать и разветвить тайник - не работает:

    c:>git stash branch stash_branch
    
    error: you need to resolve your current index first
    
    file1: needs merge
    
  • Возврат к голове также не увенчался успехом

    C:>git revert HEAD
    error: Reverting is not possible because you have unmerged files.
    hint: Fix them up in the work tree, and then use 'git add/rm <file>'
    hint: as appropriate to mark resolution and make a commit.
    fatal: revert failed
    

Я очень хочу вернуть свою шкатулку - есть ли она или я потерял свою шкатулку полностью?

Я попытался сбросить слияние и другие предложенные решения, но безрезультатно. Похоже, я потерял все свои тайники.

1 Ответ

4 голосов
/ 11 октября 2019

Похоже, единственное, что вы здесь сделали неправильно, это продолжали пытаться повторно применить оставшийся тайник. Помните, git stash pop означает: Выполнить git stash apply. Если это удастся, запустите git stash drop.

Ваш git stash apply равен с ошибкой , а не с последующей . Так что git stash drop никогда не происходит - что все как задумано.

Когда слияние завершается неудачей - независимо от того, как вы вызвали слияние - вы несете ответственность за устранение путаницы. Git сделал для тебя как можно больше. Все остальное зависит от вас. Итак, вы пришли к шагу 5:

Итак, я слил файл - / file1, отредактировав в редакторе. Добавлено / file1 и зафиксировано

Это завершило git stash apply (часть "добавленный файл1" 1 ). Вы сделали новый коммит, что тоже хорошо, хотя обратите внимание, что, пропустив git add file2, вы не зафиксировали обновленный файл2, который git stash apply успешно слился сам по себе.

Но тогдаВы вернулись на шаге 6, чтобы попытаться повторно применить тайник снова. Все, что вам нужно сделать, если вы уверены, что все с шага git stash сохранено, это drop тайник с git stash drop.

Если вы не удовлетворен тем, что все сохранено, сохраните тайник или превратите его в отдельную ветвь, используя git stash branch.


Я изменил это на "file1", а не "/ file1",поскольку пути к файлам в Git почти никогда не должны начинаться с /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...