Как настроить редактор для работы с Git в Windows?

561

Я пробую Git на Windows . Я попал в точку попытки "git commit" и получил эту ошибку:

Терминал тупой, но не определен ни визуальный, ни редактор. Пожалуйста, укажите сообщение, используя опцию -m или -F.

Итак, я понял, что мне нужна переменная окружения с именем EDITOR. Нет проблем. Я установил это, чтобы указать на Блокнот. Это сработало почти. Сообщение о фиксации по умолчанию открывается в Блокноте. Но Блокнот не поддерживает прямые переводы строк. Я вышел и получил Notepad ++ , но не могу понять, как настроить Notepad ++ %EDITOR%таким образом, чтобы он работал с Git должным образом.

Я не женат на Notepad ++. На данный момент я не против того, какой редактор я использую. Я просто хочу иметь возможность вводить сообщения коммита в редакторе, а не в командной строке (с -m).

Те из вас, кто использует Git в Windows: Какой инструмент вы используете для редактирования ваших сообщений коммитов, и что вам нужно было сделать, чтобы он работал?

Патрик МакЭлхани
источник
7
TLDR: поместите одинарные кавычки вокруг пути к исполняемому файлу редактора
yoyo
Вероятно, не полезно, но FWIW, я просто использую обычный блокнот. Я ничего не сделал, чтобы это сработало. Он просто работал из коробки по умолчанию ...
BrainSlugs83
11
Обновление сентябрь 2015: простого git config core.editor notepadтеперь достаточно. Смотрите мой обновленный ответ ниже .
VonC
Просто заметьте, что JEdit не подходит для git. JEdit открывает только один экземпляр даже для нескольких файлов. Если он уже был открыт, git заставит его открыть новый файл, но затем вы должны полностью закрыть JEdit, прежде чем git продолжит работу. Нет опции командной строки, чтобы JEdit открывал отдельный экземпляр для редактирования сообщения фиксации.
Грант Робертсон
Если кому-то нравится Sublime Text 3, вот мои инструкции о том, как я настроил его для Windows ... и Linux: лучшие настройки Sublime Text 3 в качестве редактора git (инструкции для Windows и Linux) . @yoyo, TLDR для использования любого текстового редактора: ставьте одинарные кавычки вокруг пути к исполняемому файлу редактора И используйте прямую косую черту (/), а НЕ обратную косую черту (\) в имени пути к исполняемому файлу Windows.
Габриэль Стейплс

Ответы:

562

Обновление сентябрь 2015 (6 лет спустя)

Последний выпуск мерзавца-для-Windows , (2.5.3) теперь включает в себя:

После настройки git config core.editor notepadпользователи теперь могут использовать notepad.exeих в качестве редактора по умолчанию .
Конфигурация git config format.commitMessageColumns 72будет подхвачена блокнотом-блокнотом и перенесет сообщение о коммите после того, как пользователь его отредактирует.

См совершить 69b301b по Johannes Schindelin ( dscho) .

И Git 2.16 (Q1 2018) покажет сообщение, сообщающее пользователю, что он ожидает, когда пользователь закончит редактирование при порождении редактора, в случае, если редактор открывается в скрытое окно или где-то в тени, и пользователь теряется.

Смотрите коммит abfb04d (07 декабря 2017 г.) и коммит a64f213 (29 ноября 2017 г.) от Lars Schneider ( larsxschneider) .
При поддержке: Junio ​​C Hamano ( gitster) .
(Объединено Junio ​​C Hamano - gitster- в коммите 0c69a13 , 19 декабря 2017 г.)

launch_editor(): указать, что Git ждет ввода пользователя

Когда графическое GIT_EDITORизображение порождается командой Git, которая открывается и ожидает ввода пользователя (например, " git rebase -i"), тогда окно редактора может быть скрыто другими окнами.
Пользователь может смотреть в исходное окно терминала Git, даже не осознавая, что ему / ей нужно взаимодействовать с другим окном, прежде чем Git сможет продолжить работу. Для этого пользователя Git кажется висящим.

Распечатайте сообщение о том, что Git ждет ввода редактора в исходном терминале, и избавьтесь от него, когда редактор вернется, если терминал поддерживает удаление последней строки.


Оригинальный ответ

Я только что проверил это с git версии 1.6.2.msysgit.0.186.gf7512 и Notepad ++ 5.3.1

Я предпочитаю не устанавливать переменную EDITOR, поэтому я попытался:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

Это всегда дает:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

Если я определю npp.bat в том числе:

"c:\Program Files\Notepad++\notepad++.exe" %*

и я печатаю:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

Он работает только из сеанса DOS, но не из оболочки git .
(не то, что с механизмом конфигурации core.editor, скрипт с " start /WAIT..." в нем не будет работать, а только откроет новое окно DOS)


В ответе Беннетта упоминается возможность избежать добавления сценария, но ссылаться непосредственно на саму программу между простыми кавычками . Обратите внимание на направление косых черт! Используйте /НЕ \для разделения папок в имени пути!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Или, если вы находитесь в 64-битной системе:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Но я предпочитаю использовать скрипт (см. Ниже): таким образом я могу играть с разными путями или разными вариантами без необходимости повторной регистрации a git config.


Реальное решение (со сценарием) состояло в том, чтобы понять, что:
то, на что вы ссылаетесь в файле конфигурации, на самом деле является /bin/shсценарием shell ( ) , а не сценарием DOS.

Так что же работает:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

с C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

или

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

С этой настройкой я могу сделать ' git config --global --edit' из DOS или Git Shell, или я могу сделать ' git rebase -i ...' из DOS или Git Shell.
Команды бота вызовут новый экземпляр notepad ++ (отсюда и -multiInstопция ') и будут ждать закрытия этого экземпляра, прежде чем продолжить.

Обратите внимание, что я использую только «/», а не \«. И я установил msysgit, используя вариант 2. (Добавьте git\binкаталог в PATHпеременную окружения, но не переопределяя некоторые встроенные инструменты Windows)

Тот факт, что обертка notepad ++ называется .bat, не важен.
Было бы лучше назвать его 'npp.sh' и поместить его в [git]\cmdкаталог (или в любой каталог, на который ссылается переменная среды PATH).


Смотрите также:


lightfire228 добавляет в комментариях :

Если у вас возникли проблемы, когда N ++ просто открывает пустой файл, а git не принимает ваше сообщение о коммите , см. « Отмена фиксации из-за пустого сообщения »: измените свой файл .batили .shфайл, чтобы сказать:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

Это скажет notepad ++ открыть файл временного коммита, а не пустой новый.

VonC
источник
В вашем сценарии оболочки вам нужны двойные кавычки около $ *, иначе он не будет работать правильно для путей с пробелами в них. Спасибо за подробное объяснение - я устанавливаю git (и кучу других вещей) в Windows для начинающих программистов, и командную строку достаточно сложно взломать, не заставляя их изучать команды vi.
Сара Мэй
Другой конкретный пример: stackoverflow.com/questions/1634161/…
VonC
1
После ответа Беннетта вам не нужно создавать сценарий, вы можете просто использовать апостроф «внутри кавычек».
Тобиас Кинцлер
@Tobias: правда, я включил его ответ в свой, а также причину, по которой я все еще предпочитаю ссылаться на скрипт в своих git configнастройках.
VonC
6
@NateGlenn Используйте сокращенный dir /Xэквивалент: " PROGRA~2" для " Program Files (x86)", что является хорошей привычкой, когда вы используете кроссплатформенные совместимые инструменты в Windows, что позволяет вам заполнять пробелы.
Джей Джей Забкар
300

Основываясь на ответе Даррена , чтобы использовать Notepad ++, вы можете просто сделать это (все в одной строке):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Очевидно, эта C:/Program Files/Notepad++/notepad++.exeчасть должна быть путем к исполняемому файлу Notepad ++ в вашей системе. Например, это может быть C:/Program Files (x86)/Notepad++/notepad++.exe.

Это работает как шарм для меня.

Беннет МакЭлви
источник
10
Я тоже! Кстати, эти переключатели описаны в C: / Program Files / Notepad ++ / user.manual / Документация / Notepad-User-Manual / Command-Line.html
Эндрю Свон
23
Следите за тем, чтобы Notepad ++ находился в `C: \ Program Files (x86)`
mindless.panda
8
Для изменения x64 Windows , чтобы: мерзавец конфигурации --global core.editor "" C: / Program Files (x86) / Notepad ++ / Notepad ++ еха. -MultiInst -notabbar -nosession -noPlugin"
Дариуш
4
Я понимаю, что опаздываю на эту вечеринку, но из любопытства кто-нибудь знает (или даже вспоминает, после всех этих лет), почему нужно указать «-notabbar»? Я понимаю причину, лежащую в основе других параметров (ну, на самом деле, я не уверен, почему "-noPlugin"), но не этот.
Уилсон Ф,
11
@WilsonF Причина в том, что вы ДОЛЖНЫ выйти из notepad ++, чтобы git прекратил ждать ввода и продолжил. Вы не хотите открывать другие вкладки в этом экземпляре Notepad ++, потому что тогда ваш git-сеанс будет заморожен! Эти настройки делают абсолютно правильно: если у вас уже открыт Notepad ++, вы получаете новый экземпляр, который не позволяет открывать другие файлы, и который вы должны закрыть, когда закончите, чтобы git знал, что вы закончили редактирование , Работает так же для фиксации сообщений.
ErikE
50

Во всяком случае, я только что поиграл с этим и нашел следующее, чтобы работать хорошо для меня:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Я не думаю, что CMD любит одинарные кавычки, поэтому вы должны использовать двойные кавычки «для указания аргумента встроенной строки пробела».

Cygwin (который, я считаю, является основной платформой для Git's Bash), с другой стороны, любит и то, 'и другое "; вы можете указать CMD-подобные пути, используя /вместо \, если строка заключена в кавычки, т.е. в этом случае, используя одинарные кавычки.

В -mпереопределяет / указывает на использование нескольких редакторов , и нет никакой необходимости для %*прикрепил на конце.

Даррен Бишоп
источник
Спасибо за объяснение одинарной / двойной кавычки, теперь имеет смысл!
Патрик Макдональд
3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"работает как шарм для меня.
Влад Голубев
Я использовал `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, однако когда я запускаю "git commit", он открывается редактор блокнота. Любые мысли о том, почему это будет иметь место? Заранее спасибо.
Райан Чейз
@RyanChase Удалите запись локальной конфигурации из ./git/config, напримерeditor = notepad
Рикки Бойс
1
Git Bash работает под MingW64, а не Cygwin. У Cygwin есть собственный бинарный файл Git.
Ганс Дерагон
27

Изменить: После обновления до Vim 7.3, я пришел к выводу, что самый чистый и простой способ сделать это:

  1. Добавьте основную папку Vim в свой путь (щелкните правой кнопкой мыши Мой компьютерСвойстваДополнительноПеременные среды )

  2. Запустите это:

    git config --global core.editor "gvim --nofork '%*'"
    

Если вы сделаете это таким образом, то я вполне уверен, что это будет работать и с Cygwin.

Оригинальный ответ:

Даже с парой ответов, связанных с Vim, у меня были проблемы с настройкой работы с gVim под Windows (без использования командного файла,% EDITOR% или Cygwin).

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

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Одна ошибка, которая заняла у меня некоторое время, это не обратная косая черта в стиле Windows. Это нормальные слеши.

Ник Ноулсон
источник
1
Если vim установлен в Program Files(x86), то вам нужно явно изменить путь.
Swapnil
15

Notepad ++ работает просто отлично, хотя я предпочитаю придерживаться Notepad, -m или даже иногда встроенным «редактировать».

Проблема, с которой вы сталкиваетесь при использовании Notepad ++, связана с тем, как Git запускает исполняемый файл редактора. Мое решение состоит в том, чтобы установить переменную среды EDITORдля пакетного файла, а не для фактического исполняемого файла редактора, который выполняет следующие действия:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITприказывает сеансу командной строки прекратить работу до выхода из приложения, таким образом, вы сможете редактировать все, что душе угодно, пока Git с радостью ждет вас. % * передает все аргументы в пакетный файл через Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat
Патрик Джонмейер
источник
У меня были проблемы с тем, чтобы заставить это работать под PowerShell. Этот метод ( stackoverflow.com/questions/10564/… ) работал нормально, хотя.
Питер Стивенс
11

Комп !

Я рад, что использую Vim, но так как я пытаюсь представить Git компании, я хотел что-то, что у всех нас есть, и обнаружил, что WordPad, кажется, работает нормально (то есть Git ждет, когда вы закончите редактирование и закроете окно).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Это использует Git Bash на msysgit; Я не пробовал из командной строки Windows (если это имеет значение).

Gavin
источник
Мне понравилась простота этого, но он не работал для меня из коробки. Вот что я попробовал. Я получаю следующее сообщение об ошибке: ошибка: возникла проблема с редактором «C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe».
Шон Луттин
3
Цитаты неверны. Вы должны поместить двойные кавычки вне одинарных кавычек . То есть используйте «C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe», и тогда он будет работать.
Шон Луттин,
Вы также можете извлечь выгоду из прямой косой черты (/) вместо обратной косой черты (\).
Крис Джонс
1
Также, вероятно, для этого лучше использовать «git config --global», а не просто «git config». Скорее всего, вы хотите, чтобы этот параметр применялся ко всем репозиториям git на вашей рабочей станции, а не только к тому, в котором вы сейчас находитесь.
Крис Джонс
@ChrisJones, нет смысла в этом случае, потому что между «программными файлами» есть пробел.
Pacerier
9

Я также использую Cygwin в Windows, но с gVim (в отличие от терминального Vim ).

Чтобы сделать эту работу, я сделал следующее:

  1. Создан однострочный пакетный файл (именованный git_editor.bat), который содержит следующее: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Размещено git_editor.batпо моему PATH.
  3. Набор GIT_EDITOR=git_editor.bat

После этого git commitи т. Д. Правильно вызовет исполняемый файл gVim.

ПРИМЕЧАНИЕ 1. Параметр --noforkgVim гарантирует, что он блокируется до тех пор, пока не будет написано сообщение о коммите.

ПРИМЕЧАНИЕ 2: Кавычки вокруг пути к gVim требуются, если в пути есть пробелы.

ПРИМЕЧАНИЕ 3: Кавычки вокруг "% *" необходимы на случай, если Git пропустит путь к файлу с пробелами.

Тим Хениган
источник
Для людей, которые используют msysgit (не git cygwin), я смог немного упростить это. stackoverflow.com/questions/10564/…
Ник Ноулсон
Если подумать, это может сработать и с cygwin, я не совсем уверен
Ник Ноулсон,
8

Благодаря сообществу Stack Overflow ... и небольшому исследованию я смог заставить моего любимого редактора EditPad Pro работать в качестве основного редактора с msysgit 1.7.5.GIT и TortoiseGit v1.7.3.0 поверх Windows XP SP3. ..

Следуя совету выше, я добавил путь к скрипту Bash для редактора кода ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Тем не менее, после нескольких неудачных попыток вышеупомянутых решений ... Я, наконец, смог заставить это работать. Согласно документации EditPad Pro, добавление флага / newinstance позволит оболочке ждать ввода редактора ...

The / newinstanceФлаг ' был ключевым в моем случае ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"
Эдди Б
источник
Да, эта двойная косая черта для параметра newinstance должна быть в документации Editpad. Спасибо, что отметили это здесь!
gwideman
EditPad Pro требует, чтобы переключатели командной строки /newinstanceимели ровно одну косую черту. Это вполне нормально для приложений Windows. Если вы вызываете EditPad из оболочки UNIX, вам нужно будет использовать любой механизм, предлагаемый вашей оболочкой, чтобы избежать прямого слеша, чтобы он не рассматривал переключатель как абсолютный путь и передавал один буквенный слеш в командную строку EditPad.
Ян Гойваэртс
2
Если у вас есть EditPad Pro 7, и вы хотите вызвать EditPad Pro из процесса, который хочет дождаться процесса EditPad, то вы должны передать /waitпереключатель в командной строке EditPad. Вы можете использовать /waitс или без, /newinstanceчтобы контролировать, нужно ли открывать новое окно EditPad или использовать существующее окно повторно. Процесс, запущенный вашим скриптом, будет ожидать закрытия файла независимо от того, было ли окно создано или повторно использовано. EditPad Pro 6 и более ранние версии не поддерживают /wait.
Ян Гойваэртс
@JanGoyvaerts ~ Спасибо за /waitподсказку, сэр ... :)
Eddie B
Я не смог заставить EditPad Lite работать на меня, используя инструкции выше. Возможно, это было потому, что я пытался вызвать EditPad (через Git), используя терминал Windows, а не Git Bash или какую-либо другую оболочку UNIX. Что для меня работало, так это прямое редактирование [core]раздела .gitconfig для включения строки editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473
8

Для Атома можно сделать

git config --global core.editor "atom --wait"

и подобное для кода Visual Studio

git config --global core.editor "code --wait"

который откроет код Atom или Visual Studio окно для фиксации,

или для возвышенного текста :

git config --global core.editor "subl -n -w"
OmgKemuel
источник
Гораздо проще и эффективнее. Спасибо.
rom5jp
6

Отредактируйте файл .gitconfig в папке c: \ Users \ YourUser и добавьте:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'
guwer
источник
6

Это один из симптомов больших проблем. Примечательно, что у вас есть что-то настройки TERM=dumb. Другие вещи, которые не работают должным образом, это lessкоманда, которая говорит, что у вас нет полностью функционального терминала.

Похоже, что это чаще всего вызвано тем, что в глобальных переменных среды Windows установлено значение TERM. Для меня проблема возникла, когда я установил Strawberry Perl, некоторая информация об этом находится в ошибке msysgit для этой проблемы. а также о нескольких решениях.

Первое решение - это исправить это в вашем ~ / .bashrc, добавив:

export TERM=msys

Вы можете сделать это из командной строки Git Bash следующим образом:

echo "export TERM=msys" >> ~/.bashrc

Другое решение, которое я и сделал, потому что меня не волнуют причины, по которым Strawberry Perl добавил TERM=dumbсвои настройки среды, - это удалить и удалить, TERM=dumbкак указано в этом комментарии к сообщению об ошибке msysgit .

Панель управления / Система / Дополнительно / Переменные среды ... (или аналогичные, в зависимости от вашей версии Windows) - это место, где в Windows задаются переменные среды. По умолчанию TERM не установлен. Если там установлен TERM, то вы (или одна из установленных вами программ - например, Strawberry Perl) установили его. Удалите этот параметр, и все будет в порядке.

Точно так же, если вы используете Strawberry Perl и заботитесь о клиенте CPAN или о чем-то подобном, вы можете оставить его TERM=dumbи использовать unset TERMв своем файле ~ / .bashrc, который будет иметь эффект, аналогичный приведенному выше для явного определения термина.

Конечно, все остальные решения верны в том смысле, что вы можете использовать git config --global core.editor $MYFAVORITEEDITORих, чтобы убедиться, что Git использует ваш любимый редактор, когда ему нужно запустить его для вас.

lambacck
источник
спасибо большое! У меня была эта проблема из-за клубничного Perl, и это сводило меня с ума! спасибо за указание на это
Дмитрий Автономов
5

Vim / gVim хорошо работает для меня.

>echo %EDITOR%

c:\Vim\Vim71\vim.exe
Мэтт МакМинн
источник
4

У меня PortableGit 1.6 работал нормально, но после обновления до версии PortableGit 1.7 для Windows у меня были проблемы. Некоторые команды Git открывают Notepad ++. Exe нормально, но некоторые нет, особенно Git rebase ведет себя по-другому.

Проблема в том, что некоторые команды запускают процесс Windows cmd, а некоторые используют процесс Unix cmd. Я хочу дать атрибуты запуска редактору Notepad ++, поэтому мне нужно иметь собственный скрипт. Мое решение заключается в следующем.

  1. Создайте скрипт для запуска соответствующего текстового редактора. Сценарий выглядит странно, но он обрабатывает как варианты Windows, так и Unix.

    с: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Установите глобальную переменную core.editor

    Сценарий был сохранен в папке git / cmd, поэтому он уже находится в пути к gitconsole. Это обязательно, поскольку полный путь может не работать должным образом.

    git config --global core.editor "git-editor.bat"
    

Теперь я могу запустить мастер- команды git commit -a и git rebase -i . Попробуйте, если у вас есть проблемы с инструментом Git Windows.

Whome
источник
4

Я использую Git на нескольких платформах, и мне нравится использовать одинаковые настройки Git на всех них. (На самом деле, все мои конфигурационные файлы находятся под контролем релиза с помощью Git, и я поставил клон репозитория Git на каждую машину.) Решение, которое я придумал, заключается в следующем:

Я установил мой редактор на giteditor

git config --global core.editor giteditor

Затем я создаю символическую ссылку под названием giteditor, которая находится в моем PATH . (У меня есть личный каталог bin , но в любом месте в PATH работает.) Эта ссылка указывает на мой текущий выбор редактора. На разных машинах и разных платформах я использую разные редакторы, так что это означает, что мне не нужно менять свою универсальную конфигурацию Git ( .gitconfig ), только ссылку, на которую указывает giteditor .

Символические ссылки обрабатываются каждой операционной системой, о которой я знаю, хотя они могут использовать разные команды. Для Linux вы используете ln -s . Для Windows вы используете встроенный в mklink cmd . У них разные синтаксисы (которые вы должны искать), но на самом деле все работает одинаково.

Билл
источник
На самом деле, я попробовал это на Windows7, и это не работает с MSY GIT. Это говоритerror: cannot spawn giteditor: No such file or directory
DanielSank
4

По предложению VonC , это сработало для меня (сводило меня с ума):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

Пропуск -waitможет вызвать проблемы, особенно если вы работаете с Gerrit и меняете идентификаторы, которые необходимо вручную скопировать в конец вашего сообщения о коммите.

Даниил
источник
4

Мне нужно было выполнить оба следующих действия, чтобы Git запустил Notepad ++ в Windows:

  • Добавьте следующее в .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Измените ярлык, чтобы запустить оболочку Git Bash для запуска от имени администратора, а затем используйте ее для запуска оболочки Git Bash. Я догадывался, что пункт контекстного меню «Git Bash here» не запускал Notepad ++ с необходимыми разрешениями.

Выполнив оба вышеперечисленных, это сработало.

JL_SO
источник
3

Я использую Cygwin на Windows, поэтому я использую:

export EDITOR="emacs -nw"

Это -nwдля no-windowsEecs, т.е. не пытаться использовать X Window .

Привязки клавиш Emacs не работают для меня из оболочки Windows, поэтому я бы использовал это только из оболочки Cygwin ... ( рекомендуется rxvt .)

bjnortier
источник
3

Это моя установка использовать Geany в качестве редактора для Git:

git config --global core.editor C:/path/to/geany.bat

со следующим содержанием в geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Он работает как в консоли DOS, так и в msysgit.

CharlesB
источник
2
VonC ответил о notepad ++, мой ответ для Geany?
CharlesB
2

Похоже, что Git не найдет редактор, если в пути есть пробелы. Так что вам придется поместить пакетный файл, упомянутый в ответе Патрика, в путь без пробелов.

Сообщество
источник
3
Этот формат отлично работает для путей с пробелами: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", поэтому может быть практичным избежать создания командного файла
Карл
2

Мне было трудно заставить Git сотрудничать с WordPad , Komodo. Править и почти со всеми другими редакторами, которые я им предоставляю. Большинство открыто для редактирования, но Git явно не ждет, когда произойдет сохранение / закрытие.

Как костыль, я просто делал то есть

git commit -m "Fixed the LoadAll method"

держать вещи в движении. Это приводит к тому, что мои коммит-сообщения становятся немного короче, чем они, вероятно, должны быть, но очевидно, что есть кое-что, что нужно сделать над версией Git для Windows.

GitGUI тоже не так уж и плох. Требуется немного ориентации, но после этого это работает довольно хорошо.

J Wynia
источник
2

Я предпочитаю использовать Emacs. Настройка может быть немного сложнее.

  1. Скачайте Emacs и распакуйте его где-нибудь вроде c:\emacs.
  2. Беги c:\emacs\bin\addpm.exe. Вам нужно щелкнуть правой кнопкой мыши и «Запуск от имени администратора», если вы используете Windows Vista или выше. Это поместит исполняемые файлы на вашем пути.
  3. Добавьте (server-start)где-нибудь в вашем .emacsфайле. Смотрите FAQ по Emacs для Windows, чтобы узнать, куда поместить ваш .emacsфайл.
  4. git config --global core.editor emacsclientw

Git теперь будет открывать файлы в рамках существующего процесса Emacs. Вам придется запустить этот существующий процесс вручную из c:\emacs\bin\runemacs.exe.

Майкл Стил
источник
1

Мне удалось заставить работать версию среды, установив переменную EDITOR с помощью кавычек и /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"
Майк
источник
1

У меня была та же проблема, и я нашел другое решение. Я получал

error: There was a problem with the editor 'ec'

У меня есть VISUAL=ec, и пакетный файл, вызванный ec.batна моем пути, который содержит одну строку:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Это позволяет мне редактировать файлы из командной строки с помощью ec <filename>, а VISUALустановка означает, что большинство unixy-программ тоже подхватывает его. Git кажется искать путь по- другому , чтобы мои другие команды , хотя - когда я посмотрел на git commitв Process Monitor я видел его смотреть в каждой папке на пути к ecи ec.exe, но не для ec.bat. Я добавил еще одну переменную окружения ( GIT_EDITOR=ec.bat), и все было хорошо.

Том Данхэм
источник
1

Я использую GitHub для Windows, который является хорошим визуальным вариантом. Но я также предпочитаю командную строку, поэтому, чтобы она работала при открытии репозитория в оболочке Git, я просто установил следующее:

git config --global core.editor vim

который отлично работает

JaKXz
источник
1

Я нашел красивое простое решение, размещенное здесь - хотя может быть ошибка в пути, по которому вы должны скопировать файл subl, указанный автором.

Я использую Windows 7 x64, и мне пришлось поместить файл «subl» в мою /Git/cmd/папку, чтобы он работал.

Это работает как шарм, хотя.

средний
источник
1

Атом и Windows 10

  1. Я щелкнул правой кнопкой мыши значок Atom на рабочем столе и нажал на свойства.
  2. Скопировал путь местоположения «Начать в»
  3. Посмотрел там с Windows Explorer и нашел "atom.exe".
  4. Я набрал это в Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Примечание: я изменил все \для /. Я создал .bashrc в своем домашнем каталоге и использовал его /для установки домашнего каталога, и он работал, поэтому я предположил, что /это будет путь.

Джонатан Рамос
источник
проверьте этот URL, это будет полезно для повышения качества вашего контента
Вилли Ченг
@Willie Спасибо, я отформатировал текст и добавил несколько тегов. Надеюсь, что это немного улучшит.
Джонатан Рамос
0

Вот решение с Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Если нет пути, не передайте путь

  2. Если путь пуст, пропустите пустой путь

  3. Если путь не пустой, конвертируйте в формат Windows.

Затем я установил эти переменные:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. РЕДАКТОР позволяет скрипту работать с Git

  2. GIT_EDITOR позволяет скрипту работать с командами Hub

Источник

Стивен Пенни
источник
0

Это работает для меня, используя Cygwin и TextPad 6 (РЕДАКТИРОВАТЬ: он также работает с TextPad 5, пока вы вносите очевидные изменения в сценарий), и предположительно модель может быть использована и для других редакторов:

Файл ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Файл ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Этот однострочный также работает:

Файл ~/script/textpad.sh(вариант 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"
kghastie
источник
0

Это сработало для меня:

  1. Добавьте каталог, содержащий исполняемый файл редактора, в переменную PATH . (Например, "C: \ Program Files \ Sublime Text 3 \" )
  2. Перезагрузите компьютер.
  3. Измените глобальную переменную Git core.editor на имя исполняемого файла редактора без расширения «.exe» (например, git config --global core.editor sublime_text)

Это оно!

ПРИМЕЧАНИЕ. Sublime Text 3 - это редактор, который я использовал для этого примера.

javimsevilla
источник
При такой настройке Sublime Text 3 открывает несколько экземпляров или обрабатывает тот факт, что git нужен для закрытия, чтобы сигнализировать об окончании редактирования?
Джеймс Уорлд
1
Я думаю, что это откроет новое окно. Вы можете добавить параметр --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip