Я полностью люблю git add -p и git stash, но у меня иногда возникает следующая проблема, которая воспроизводится с помощью следующей последовательности команд:
-
git add -p my_file: тогда я отредактирую ручку вручную (используяe), потому что расщепление, которое предлагает git, мне не подходит -
git stash --keep-index: тогда я делаю некоторое тестирование, и если тесты проходят, я не совершаю -
git stash pop: теперь возникает проблема: файлmy_fileтеперь считается конфликтующим, а git полностью перепутал мой отредактированный hunk, поэтому мне нужно отредактировать файл, удалите бесполезные метки слияния и запуститеgit add my_file, а затемgit reset HEAD
Я озадачен, потому что это происходит только при редактировании вручную. Я не вижу, как это должно иметь значение вообще.
Чтобы воспроизвести проблему:
-
touch newfile -
git add newfile -
git commit -m 'newfile' - добавить две строки в файл
-
git add -p newfile - отредактируйте hunk (
e), удалите одну из строки в hunk, затем закройте git add (q) -
git stash --keep-index -
git stash pop
Теперь файл newfile находится в незагруженном состоянии. Заметим еще раз, что проблема возникает только с отредактированными вручную файлами. Нет проблем с приведенными выше командами, если вы не вручную отредактируете ручку.
Кстати, предыдущее состояние файла находится на третьем этапе (git show :3:newfile), а предыдущая поэтапная версия находится на втором этапе (git show :2:newfile). Таким образом, я мог бы с помощью некоторой git черной магии уступить второй этап в этом индексе и третий этап в рабочем репо... но я не знаю, как это сделать, поэтому я делаю это вручную.: - (