Як я можу налаштувати редактор для роботи з 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 р.) Та а64f213 (29 листопада 2017 р.) Від Ларса Шнайдера ( larsxschneider) .
Допомагає: Хуніо С Хамано ( gitster) .
(Об'єднано Хуніо С Хамано - 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.
Команди Bot запускають новий екземпляр блокнота ++ (звідси -multiInstопція ') і чекають, коли цей екземпляр буде закритий перед продовженням.

Зауважте, що я використовую лише "/", а не \". І я встановив msysgit, використовуючи варіант 2. (Додайте git\binкаталог до PATHзмінної середовища, але без перекреслення деяких вбудованих інструментів Windows)

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


Дивись також:


lightfire228 додає в коментарях :

Для тих, хто має проблему, коли N ++ просто відкриває порожній файл, а git не приймає повідомлення про фіксацію, див. " Скасування фіксації через порожнє повідомлення ": змініть свій файл .batабо .shфайл, щоб сказати:

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

Це підкаже блокнот ++ для відкриття файлу тимчасової фіксації, а не нового порожнього.


У вашому скрипті оболонки вам потрібні подвійні лапки близько $ *, інакше це не буде належним чином працювати для шляхів з пробілами в них. Дякую за ретельне пояснення - я встановлюю git (і купу інших речей) у Windows для початківців програмістів, і командний рядок досить важкий, щоб рипнути, не змушуючи їх вивчати команди vi.
Сара Мей

Інший приклад бетону: stackoverflow.com/questions/1634161 / ...
VonC

1
Після відповіді Беннетта вам не потрібно створювати сценарій, ви можете просто використати апостроф "всередині цитат".
Тобіас Кіензлер

@Tobias: правда, я включив його відповідь у свою, а також причину, чому я все ще вважаю за краще посилатися на сценарій у своїх git configналаштуваннях.
VonC

6
@NateGlenn Використовуйте скорочений dir /Xеквівалент: " PROGRA~2" для " Program Files (x86)", що є доброю звичкою потрапляти під час використання інструментів, сумісних між платформами в Windows, що дозволяє скоротити пробіл.
JJ Zabkar

300

Спираючись на відповідь Даррена , використовувати Notepad ++ ви можете просто зробити це (все в одному рядку):

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

Очевидно, що C:/Program Files/Notepad++/notepad++.exeчастина повинна бути шлях до виконуваного Вами системи Блокнота ++. Наприклад, це може бути C:/Program Files (x86)/Notepad++/notepad++.exe.

Це працює як шарм для мене.


10
Я також! До речі, ці перемикачі пояснюються на C: / Файли програми / Блокнот ++ / user.manual / Документація / Notepad-user-manual / command-line.html
Andrew Swan

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
Я усвідомлюю, що я спізнююсь на цю вечірку, але з цікавості, чи хтось знає (чи навіть пам’ятає, після всіх цих років), чому б вказати «-нотаббар»? Я розумію міркування за іншими параметрами (ну, не впевнений, чому "-noPlugin" насправді), але не за цим.
Вілсон F

11
@WilsonF Причина полягає в тому, що ОБОВ'ЯЗКОВО вийти з блокнота ++ для 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: \\ Файли програм \\ Підвищений текст 3 \\ sublime_text.exe' -n -w -m "`, проте коли я запускаю "git commit", він відкривається редактор Блокнот. Будь-які думки щодо того, чому це було б так? Заздалегідь спасибі.
Райан Чейз

@RyanChase Видаліть запис локальної конфігурації з ./git/config, наприкладeditor = notepad
Ricky Boyce

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

«Блокнот ++» працює чудово, хоча я вирішу дотримуватися «Блокнота», -m, а то й іноді вбудованого «редагування».

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

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

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

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

У мене виникли проблеми з тим, щоб це працювало під владою. Цей метод ( stackoverflow.com/questions/10564/… ) працював чудово.
Пітер Стівенс

11

WordPad !

Я задоволений тим, що використовую Vim, але оскільки я намагаюся представити Git компанії, я хотів щось, що ми мали б, і виявив, що WordPad, здається, працює добре (тобто Git чекає, поки ви закінчите редагування та закрити вікно).

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

Це використання Git Bash в msysgit; Я не пробував із командного рядка Windows (якщо це має значення).


Мені сподобалася простота цього, але це не спрацювало для мене поза межами. Ось що я спробував. Я отримую таке повідомлення про помилку: помилка: Виникла проблема з редактором "C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe".
Шон Люттин

3
Цитати неправильні. Ви повинні поставити подвійні лапки поза окремими цитатами . Тобто, використовуйте "" C: \ програмні файли \ Windows NT \ аксесуари \ 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: --noforkПараметр gVim забезпечує блокування, поки не буде записано повідомлення про фіксацію.

ПРИМІТКА 2. Цитати навколо шляху до gVim потрібні, якщо у вас є пробіли.

ПРИМІТКА 3: Лапки навколо "% *" потрібні на випадок, якщо Git проходить шлях до файлу з пробілами.


Для людей, які використовують msysgit (не cygwin's git), я зміг трохи спростити це. stackoverflow.com/questions/10564 / ...
Нік Ноулсон

По-друге, подумав, що це може працювати і з cygwin, я не зовсім впевнений
Нік Ноулсон

8

Завдяки спільноті переповнення стека ... та невеликому дослідженню я зміг отримати свого улюбленого редактора 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 додавання прапора '/ newin substance' дозволить оболонці чекати введення редактора ...

Прапор ' / newin substance ' був ключовим у моєму випадку ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //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підказку прапора, сер ... :)
Едді Б

Мені не вдалося змусити 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

Для Atom ви можете зробити

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

і подібне для Visual Studio Code

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

яке відкриє вікно коду Atom або Visual Studio для вас,

або для піднесеного тексту :

git config --global core.editor "subl -n -w"

Набагато простіше і ефективніше. Дякую.
rom5jp

6

Відредагуйте .gitconfig файл у папці c: \ Users \ YourUser та додайте:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

Це один із симптомів більшої проблеми. Примітно, що у вас є щось налаштування TERM=dumb. Інші речі, які не працюють належним чином, - цеless команда, яка говорить, що у вас немає повністю функціонального терміналу.

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

Перше рішення - це виправити це у вашому ~ / .bashrc, додавши:

export TERM=msys

Ви можете зробити це з підказки Git Bash так:

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

Іншим рішенням, яке в кінцевому підсумку є те, що я зробив, тому що мене не хвилюють причини, пов’язані з полуничним Perl, для додавання TERM=dumbдо моїх налаштувань навколишнього середовища, полягає в тому, щоб перейти та видалити, TERM=dumbяк вказано в цьому коментарі, у звіті про помилки msysgit .

Панель управління / Система / Додаткові / Змінні середовища ... (або подібні, залежно від вашої версії Windows) - це місце, де в Windows встановлені липкі змінні середовища. За замовчуванням термін не встановлений. Якщо там встановлено термін, то ви (або одна з встановлених вами програм - наприклад, Strawberry Perl) встановили його. Видаліть це налаштування, і вам слід добре.

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

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


THX стільки! У мене була ця проблема через Полуничний перл, і це мене зводило з розуму! THX для вказівки на це
Дмитро Автономов


4

У мене PortableGit 1.6 працював нормально, але після оновлення до випуску PortableGit 1.7 Windows у мене виникли проблеми. Деякі з команд Git відкривають «Блокнот ++ .exe» чудово, але деякі - ні, особливо Git rebase поводиться інакше.

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

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

    c: /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.


4

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

Я встановив свого редактора в giteditor

git config --global core.editor giteditor

Потім я створюю символічне посилання з ім'ям giteditor , який знаходиться в моєму PATH . (У мене є особистий каталог біна , але в будь-якій точці PATH працює.) Це посилання вказує на мого поточного редактора, який я вибрав. На різних машинах і на різних платформах я використовую різні редактори, тому це означає, що мені не потрібно змінювати свою універсальну конфігурацію Git ( .gitconfig ), а лише посилання на це giteditor вказує .

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


Насправді я спробував це на Windows7, і це не працює з msys 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може спричинити проблеми, особливо якщо ви працюєте з Геррітом та змінюєте ідентифікатори, які потрібно скопіювати вручну внизу повідомлення про фіксацію.


4

Мені потрібно було зробити і в наступному , щоб отримати Git запустити Notepad ++ в Windows:

  • Додайте до .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Змініть ярлик, щоб запустити оболонку Git Bash для запуску адміністратора, а потім використовуйте її для запуску оболонки Git Bash. Я здогадувався, що запис контекстного меню "Git Bash here" не запускає Notepad ++ з необхідними дозволами.

Після виконання обох вищесказаних це спрацювало.


3

Я використовую Cygwin у Windows, тому використовую:

export EDITOR="emacs -nw"

Це -nwдля no-windows, тобто скажіть Emacs не намагатися використовувати X Window .

Клавіатурні вкладки Emacs не працюють для мене із оболонки Windows, тому я використовував би це лише з оболонки Cygwin ... ( рекомендується rxvt .)


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.


2
VonC відповів про блокнот ++, моя відповідь - для Geany?
CharlesB

2

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


3
Цей формат відмінно працює для шляхів з пробілами: git config --global core.editor "\" c: \ програмні файли \ textpad 5 \ textpad.exe \ "", тому вам може бути практичним уникнути створення пакетного файлу
Карл

2

У мене були труднощі з тим, щоб Git співпрацював з WordPad , Komodo Edit і майже всі інші редактори, які я їм даю. Більшість відкритих для редагування, але Git явно не чекає, коли збереження / закриття станеться.

Як милиця, я щойно робив тобто

git commit -m "Fixed the LoadAll method"

щоб продовжувати рух. Як правило, мої повідомлення про фіксацію трохи коротші, ніж вони, мабуть, повинні бути, але явно потрібно виконати певну роботу над версією Windows Git.

GitGUI також не так вже й погано. Це займає трохи орієнтування, але після цього він працює досить добре.


2

Я вважаю за краще використовувати Emacs. Налаштування його може бути трохи складним.

  1. Завантажте Emacs і розпакуйте його куди завгодно c:\emacs.
  2. Біжи c:\emacs\bin\addpm.exe. Якщо ви використовуєте Windows Vista або вище, вам потрібно клацнути правою кнопкою миші та "Запустити як адміністратор". Це поставить виконувані файли на ваш шлях.
  3. Додайте (server-start)десь у свій .emacsфайл. Дивіться Emacs для Windows FAQ для порад про те, куди покласти .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встановивши, означає, що більшість уніфіксованих програм також підбирають його. Схоже, Git шукає шлях по-різному в інших моїх командах - коли я подивився на git commitв " Монітор процесів", я побачив, як він виглядає у кожній папці на шляху до " ecі" ec.exe, але не для "" ec.bat. Я додав ще одну змінну середовища ( GIT_EDITOR=ec.bat) і все було добре.


1

Я використовую GitHub для Windows, що є хорошим візуальним варіантом. Але я також віддаю перевагу командному рядку, тому для того, щоб він працював, коли я відкривав сховище в оболонці Git, я просто встановив наступне:

git config --global core.editor vim

що чудово працює.



1

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

У мене працює Windows 7 x64, і мені довелося помістити файл "subl" у свою /Git/cmd/папку, щоб він працював.

Хоча це працює як шарм.


1

Atom та Windows 10

  1. Я правою кнопкою миші натиснув значок Atom на робочому столі та натиснув на властивості.
  2. Скопіював шлях локації "Почати в"
  3. Подивився там у Провідник Windows і знайшов "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. EDITOR дозволяє сценарію працювати з Git

  2. GIT_EDITOR дозволяє сценарію працювати з командами Hub

Джерело


0

Це працює для мене за допомогою Cygwin та TextPad 6 (EDIT: він також працює з 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`"

0

Це працювало для мене:

  1. Додайте до змінної PATH каталог, який містить виконуваний редактор . (Наприклад, "C: \ програмні файли \ піднесений текст 3 \" )
  2. Перезавантажте комп'ютер.
  3. Змініть core.editor глобальну змінну Git на ім'я редактора, що виконується без розширення '.exe' (наприклад, git config --global core.editor sublime_text)

Це воно!

ПРИМІТКА: Sublime Text 3 - це редактор, який я використовував у цьому прикладі.


Якщо налаштовано таким чином, чи відкриває Sublime Text 3 декілька екземплярів чи обробляє той факт, що git потрібен для закриття, щоб сигналізувати про закінчення редагування?
James World

1
Я думаю, це відкриє нове Вікно. Ви можете додати перемикач --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.