LINUX.ORG.RU

Как выйти из vim, если использовать его в качестве редактора для коммитов?

 ,


0

1

Доброй ночи. Я решил использовать редактор vim для прописания коммитов. В файле .bashrc я прописал такую команду

alias gp='git add --all && git commit -m && git push'

Дело в том, что я все свои настройки храню удаленно и пушу с гитом.

Я искал инфу как выйти из vim, многие советуют известные способы

  • ZZ
  • :wq
  • :cq
  • :x!

Я про все эти способы знаю, но они в данном случае не работают, так как vim просит дать имя файлу.

Как быть в этой ситуации? Должно же быть решение, так как во многих дистрибутивов именно vim является редактором по-умолчанию для коммитов.

Я работаю в ubuntu 18.04. В моем случае, редактором по-умолчанию был nano, я поменял на vim.

Буду признателен за помощь.

Ответ на: комментарий от seriiserii825
git commit --help
       -m <msg>, --message=<msg>
           Use the given <msg> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.

anonymous
()
Ответ на: комментарий от xaizek

Вот, что мне выдало q!

de<U+0080>ý`l<U+0080>ý`e<U+0080>ý`<U+0080>kb
<U+0080>ý`idelete alin<U+0080>kb<U+0080>kb<U+0080>kb linejj<U+0080>ý`:q!

Следующие команды не работают.

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

Я про это знаю. В вопросе другое звучит.

Я задал горячие клавиши gp, нажал, мне открылся vim, я прописал, закрыл редактор и оно само запушилось.

Понимаете.

А так нужно всю команду ручками набирать.

seriiserii825
() автор топика

vim просит дать имя файлу.

А разве git не запустил vim с уже существующим временным файлом в качестве параметра?
Как ты сделал это: «поменял на vim»?

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

Это значит, что после -m ты сразу пишешь короткое описание коммита, а не открыть в редакторе по умолчанию.

И зачем сразу пушить? Не, можно конечно, но зачем?

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от seriiserii825

Он о том, что аргумент обязателен, а его нет. Vim, видимо, и не запустился.

xaizek ★★★★★
()

alias gp='git add --all && git commit -m && git push'

Сразу видно, что человек пользоваться гитом не умеет, зачем он ему нужен не знает, и учиться не хочет

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от seriiserii825

Ты врешь. У меня:

$ git commit -m
error: switch `m' requires a value
Чтобы открыть git commit со своим редактором
$ EDITOR=vim git commit
Откроется vim для редактирования файла с именем 'COMMIT_EDITMSG'. Можно сразу выйти без сохранения, тогда коммит отменяется, можно изменить-сохранить-выйти. Никаких вопросов про имя файла.

anonymous
()
Ответ на: комментарий от seriiserii825

Что объединение этих трех операций (даже любых двух из них) противоречит всей идеологии гита и превращает его в аналог дропбокса

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

Эту команду можно на русский перевести как «да за$%али вы меня своим гитом, он тут для галочки только»

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

Вы не понимаете. Можно использовать другое сочетание

alias gc='git add --all && git commit'
без пуша, а можно посто git commit.

У меня вопрос про другое.

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

я использую git add * (тож самое), предварительно посмотрев список изменённых файлов git status (обычно файл 1, максимум 3). После смотрю ещё раз git status и вывод git diff –cached, чтобы посмотреть что изменил.

То есть очень редко бывает, что я не собираюсь коммитить изменение после его добавления в каком либо файле.

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

А если ты запустишь git commit без опции -m, оно тебе само откроет $EDITOR, и не придётся удалять гланды через задницу.

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

предварительно посмотрев список изменённых файлов git status(обычно файл 1, максимум 3). После смотрю ещё раз git status и вывод git diff –cached, чтобы посмотреть что изменил.

Воо, это уже другой разговор

У меня лично воркфлоу немного другой, я открываю git gui и просматриваю изменения, попутно добавляя в индекс то, что к делу относится, оставляя в дереве то, что пойдет в слдедующий атомарный коммит, и откатывая то, что было добавлено зря/для отладки/т.д. Но не глядя - это вообще жесть

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

И перед пушем тоже надо посмотреть, какие коммиты уходят в публичный доступ - возможно остались fixup'ы или что-то еще в таком духе

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

Вы все не понимаете, чего я добиваюсь. Я не про идеологию, и про то как правильно все нужно и как коммитить.

Я про это, что пишешь в консоли

git add file.txt 
git commit -m "commit text"
git push   

И когда прописываешь git commit всю строку, то приходится стрелками или горячими клавишами или ctlr+r из истории идти к кавычкам, стереть и потом опять прописать. Это не удобно.

Я прописал alias gc = git commit, и открывается редактор, я пишу текст коммита, закрываю и все.

Теперь понятно?

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

Я прописал alias gc

Хотя у гита уже есть встроенная команда git gc...

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

Тебе походу svn нужен. Или какой-нибудь gitkraken.

А вообще в git add лучше добовлять файлы от одного типа изменений, чтобы в коммите не было мешанины.

https://stackoverflow.com/questions/19595067/git-add-commit-and-push-commands...

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

вместо nano, vim.

Вы что не знаете, что когда первый раз устанавливаешь git в системе, то создается файл .gitconfig в домашней дирекории пользователя.

И git просит ввести имя и email.

Так вот эти данные хранятся в файле .gitconfig.

[core]
	editor = '/usr/bin/vim' -w

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

ответа не услышу))

так вы же из vim выйте не можете, а хотите им коммиты править. Зачем. Простыню тужа все равно не запихаешь.

EDITOR=vim git commit работает ? Из этого vim выпустит ?

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

Все, спасибо всем, мне это решение подходит.

I use this in my .bash_profile

gitpush() {
    git add .
    git commit -m "$*"
    git push
}
alias gp=gitpush
It executes like

gp A really long commit message
Don't forget to run source ~/.bash_profile after saving the alias.

А из vim выйте все же знаю как. Я еще в винде везде, где можно использовал, и в sublime, и в vscode и даже в phpstorm.

Вот потому и решил вернуться в ubuntu.

Теперь в винду ни ногой.

Все, еще раз спасибо все. Спокойной ночи. И удачи.

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

'/usr/bin/vim' -w

Очень смешно. Молодец.

А теперь иди и посмотри в мануал vim на то что делает опция -w.

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

-w

Очень сомнительно, что при выполнении

git config –global core.editor vim

в файл конфигурации автоматически оказалась дописана эта опция.

grem ★★★★★
()

q или :q
делать :write нельзя, т.к. указано nomodifiable. Vim сам сохранит изменения.

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