Проблемы с Git — rebase/squash

Я пытаюсь раздавить несколько коммитов в репозитории git.

> git rebase -i HEAD~3

Successfully rebased and updated refs/heads/staging.

Откроется файл под названием git-rebase-todo :

pick a2f3467 Require statement incorrect
pick c41212e Require file in environment
pick 2743221 This should work

# Rebase c5f42f3..2743221 onto c5f42f3
# ..........

Я попытался изменить два нижних коммита на squash с pick . Сохраняю файл и получаю следующую ошибку:

Unable to save ~/Documents/code/myapp/.git/rebase-emrge/git-rebase-todo


person Brandon    schedule 13.03.2013    source источник
comment
Это похоже на ошибку файловой системы, а не на ошибку Git. Что произойдет, если вы попытаетесь создать файл в этом месте вручную?   -  person Ben    schedule 13.03.2013
comment
Каким редактором вы пользуетесь?   -  person poke    schedule 13.03.2013
comment
@poke Я использую SublimeText2 - ничего особенного (не думаю!)   -  person Brandon    schedule 13.03.2013
comment
@Ben, в .git нет папки rebase-merge .... Это нормально? Что-то не так с тем, как ST2 загружает коммит?   -  person Brandon    schedule 13.03.2013
comment
Обычно он не существует, но его следует создавать при необходимости во время перебазирования. Можете ли вы проверить, существует ли папка, когда редактор открыт с файлом git-rebase-todo?   -  person Ben    schedule 14.03.2013
comment
Кроме того, у вас когда-нибудь возникала подобная проблема с другими операциями Git, связанными с редактированием? Используете ли вы один и тот же редактор для сообщений фиксации? Можете ли вы попробовать другой? (Интересно, есть ли тот, который может дать более подробное сообщение об ошибке?)   -  person Ben    schedule 14.03.2013
comment
@ Бен, я первым делом проверю сегодня вечером (сейчас на работе). Я не очень часто использую редактор при использовании git — я просто копаюсь в командной строке. Это первый раз, когда я действительно нуждался в этом. Чтобы вы посоветовали? Где изменить этот параметр?   -  person Brandon    schedule 14.03.2013
comment
На самом деле нет конкретного редактора, который я бы порекомендовал. Просто пытаюсь сузить проблему и задаюсь вопросом, является ли проблема редактором, а не интерактивной перебазировкой. Вы можете использовать git config core.editor для изменения редактора по умолчанию. Думаю, первым делом нужно проверить пока редактор открыт, существует ли папка, и можно ли в нее записывать файлы.   -  person Ben    schedule 15.03.2013
comment
@Ben это определенно SublimeText. Папка не существует, когда я перебазирую, но вся операция работает нормально, если я делаю это в nano. Какие-нибудь мысли?   -  person Brandon    schedule 15.03.2013
comment
Я добавил к вашему вопросу тег sublimetext2 на случай, если он привлечет любого, кто может помочь в его отладке. В противном случае использовать nano для работы с Git?   -  person Ben    schedule 15.03.2013
comment
Спасибо за вашу помощь @Ben! Смотрите ответ Майкла ниже - это сработало для меня   -  person Brandon    schedule 15.03.2013


Ответы (2)


Проблема в том, что при запуске sublimetext2 он не блокируется и сразу возвращается. Затем Git считает, что вы закончили редактирование файла, и выполняет перебазирование. Вот почему вы видите

Successfully rebased and updated refs/heads/staging

сообщение, прежде чем вы даже отредактировали файл. Вместо этого используйте команду subl, которая предназначена для такого использования. В справке github указано, что нужно настроить это с

git config --global core.editor "subl -n -w"
person Michael Wild    schedule 15.03.2013
comment
Это немедленно остановило применение команды rebase и снова сделало файл доступным для сохранения. К сожалению, это все еще не продолжается после сохранения. - person Andi Giga; 04.12.2015
comment
Хорошо, я нашел решение, вам нужно не только сохранить файл, но и редактор, который нужно закрыть после этого. Сорри, не знал этого, вот дополнительная информация по теме: stackoverflow.com/questions/22631863/ - person Andi Giga; 04.12.2015

По моему опыту, проблема была связана с привилегиями пользователя.

Если вы получаете сообщение об ошибке Could not find the file "~/../../git-rebase-todo" при сохранении файла, попробуйте запустить его как sudo:

sudo git rebase -i HEAD~3

Однако имейте в виду, что это может изменить владельца любых затронутых файлов.

person Alkarin    schedule 26.04.2018