LINUX.ORG.RU

не получается применить squash в git

 ,


0

1

помогите пожалуйста скукожить несколько коммитов в один при помощи squash. у меня есть несколько коммитов:

md@md ~/.MINT17/code/misc/squash $ git hist
* f3bb369 2019-08-15 | 4 (HEAD, master) [kalinin]
* b8c33c7 2019-08-15 | 3 [kalinin]
* 99e192a 2019-08-15 | 2 [kalinin]
* 01f50b2 2019-08-15 | 1 [kalinin]

проблема в том, что после команды

git rebase -i HEAD~3

открывается окно редактора со списком коммитов, в который я вношу команду squash в нужном месте. но этот файл невозможно сохранить и закрыть. выводится следующее модальное окно: https://i.yapx.ru/FAjdV.png

я для каталога .git установил три топора, но всё равно проблема осталась, вот весь вывод:

md@md ~/.MINT17/code/misc/squash $ git rebase -i HEAD~4
fatal: Needed a single revision
invalid upstream HEAD~4
md@md ~/.MINT17/code/misc/squash $ git rebase -i HEAD~3
Successfully rebased and updated refs/heads/master.
md@md ~/.MINT17/code/misc/squash $ sudo git rebase -i HEAD~3
[sudo] password for md: 
/usr/bin/editor: line 40: /home/md/.MINT17/code/misc/squash/.git/rebase-merge/git-rebase-todo: Permission denied
/usr/bin/editor: line 40: exec: /home/md/.MINT17/code/misc/squash/.git/rebase-merge/git-rebase-todo: cannot execute: Permission denied
Could not execute editor
md@md ~/.MINT17/code/misc/squash $ sudo chmod 777 -R ./.git
md@md ~/.MINT17/code/misc/squash $ 
md@md ~/.MINT17/code/misc/squash/.git $ 
md@md ~/.MINT17/code/misc/squash $ sudo git rebase -i HEAD~3
/usr/bin/editor: line 40: /home/md/.MINT17/code/misc/squash/.git/rebase-merge/git-rebase-todo: Permission denied
/usr/bin/editor: line 40: exec: /home/md/.MINT17/code/misc/squash/.git/rebase-merge/git-rebase-todo: cannot execute: Permission denied
Could not execute editor
md@md ~/.MINT17/code/misc/squash $ ^C
md@md ~/.MINT17/code/misc/squash $ git hist
* f3bb369 2019-08-15 | 4 (HEAD, master) [kalinin]
* b8c33c7 2019-08-15 | 3 [kalinin]
* 99e192a 2019-08-15 | 2 [kalinin]
* 01f50b2 2019-08-15 | 1 [kalinin]


Ответ на: комментарий от annulen

а не подскажете как использовать консольный редактор, не выпиливая из .bashrc

export EDITOR=/usr/bin/subl

а то после этого придётся перезагружаться...

prozaik
() автор топика
Ответ на: комментарий от prozaik

а не подскажете как использовать консольный редактор, не выпиливая из .bashrc

Передать переменную программе:

EDITOR=/usr/bin/vi git rebase -i HEAD~3

или экспортировать в сессии (в текущем окне терминала):

export EDITOR=/usr/bin/vi
git rebase -i HEAD~3
mord0d ★★★★★
()
Ответ на: комментарий от dhampire

GIT_EDITOR

Это если нужно сказать Git, чтобы использовал не то, что в $EDITOR; если нужно временно сменить текстовый редактор, принципиальной разницы нет.

mord0d ★★★★★
()
Ответ на: комментарий от prozaik

Не обязательно использовать vi, но редактор обязан сохранять данные в тот же временный файл и не форкаться из терминала, чтобы git корректно перехватывал окончание редактирования. Большинство TUI-редакторов так умеют.

mord0d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.