У меня есть файл с кучей файлов.
Но я не могу применить свой тайник из-за противоречивого файла. Я идентифицировал проблематичный файл в своем кошельке, и я хочу его удалить.
Как я могу удалить один файл из тайника, не уничтожив все это?
У меня есть файл с кучей файлов.
Но я не могу применить свой тайник из-за противоречивого файла. Я идентифицировал проблематичный файл в своем кошельке, и я хочу его удалить.
Как я могу удалить один файл из тайника, не уничтожив все это?
Закладок - это фиксация (или действительно, две или даже иногда три фиксации), и вы не можете изменить фиксацию. Тогда буквальный ответ на ваш вопрос - "вы не можете". К счастью, вам не нужно.
Вы говорите, что не можете применить свой тайник из-за противоречивого файла. Но вы можете применить его, вы просто получите конфликт слияния. Все, что вам нужно сделать, это разрешить конфликт слияния.
Скажем, конфликт находится в файле README.txt
, просто чтобы там что-то писать здесь.
Если вы хотите разрешить его, сохранив версию на ветке, примените stash, а затем проверьте версию на ветке, чтобы разрешить конфликт:
git stash apply
git checkout --ours -- README.txt # or git checkout HEAD -- README.txt
Если вы хотите сохранить версию in-stash, извлеките ее:
git checkout --theirs -- README.txt # or git checkout stash -- README.txt
Или используйте любой старый инструмент разрешения слияния (я просто использую текстовый редактор), а затем "git добавить" результат.
Как только вы все закончите с тайком, git stash drop
"забудет" коммиты, составляющие тайник. (Не делайте этого, пока не убедитесь, что с ним все покончено, очень сложно вернуть его обратно.)
Существует обходной путь для этой ситуации:
сохраните свой файл в виде файла исправления:
$ git stash show -p > stash.patch
примените этот патч, пропустив конфликты (вас попросят разрешить конфликты, просто пропустите отсутствующие файлы):
$ patch -p1 < stash.patch
Не забывайте очищать stash.patch
после этого!
удалите требуемый файл из локальной базы кода, а затем нажмите на него. Изменения будут отражены, и ваши файлы будут удалены из кошелька.