Estou testando o Git no Windows . Cheguei ao ponto de tentar "git commit" e recebi este erro:
O terminal é burro, mas não está definido VISUAL nem EDITOR. Forneça a mensagem usando a opção -m ou -F.
Então eu descobri que precisava ter uma variável de ambiente chamada EDITOR. Sem problemas. Eu o defino para apontar para o Bloco de notas. Isso funcionou quase. A mensagem de confirmação padrão é aberta no bloco de notas. Mas o Bloco de notas não suporta feeds de linha simples. Saí e peguei o Notepad ++ , mas não consigo descobrir como configurar o Notepad ++ da %EDITOR%
maneira que funcione com o Git conforme o esperado.
Eu não sou casado com o Notepad ++. Neste ponto, eu não me importo com o editor que eu uso. Eu só quero poder digitar mensagens de confirmação em um editor, e não na linha de comando (com -m
).
Aqueles de vocês que usam o Git no Windows: Qual ferramenta você usa para editar suas mensagens de confirmação e o que você fez para fazê-lo funcionar?
git config core.editor notepad
agora é suficiente. Veja minha resposta atualizada abaixo .Respostas:
Atualização em setembro de 2015 (6 anos depois)
A última versão do git-for-Windows (2.5.3) agora inclui:
Veja commit 69b301b de Johannes Schindelin (
dscho
) .E o Git 2.16 (primeiro trimestre de 2018) mostrará uma mensagem para informar ao usuário que está aguardando o término da edição ao gerar um editor, caso o editor seja aberto em uma janela oculta ou em algum lugar obscuro e o usuário se perca.
Consulte commit abfb04d (07 dez 2017) e commit a64f213 (29 nov 2017) por Lars Schneider (
larsxschneider
) .Ajudado por: Junio C Hamano (
gitster
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 0c69a13 , 19 de dezembro de 2017)Resposta original
Acabei de testar com a versão 1.6.2.msysgit.0.186.gf7512 do git e o Notepad ++ 5.3.1
Eu prefiro não ter que definir uma variável EDITOR, então tentei:
Isso sempre dá:
Se eu definir um npp.bat, incluindo:
e eu digito:
Apenas funciona a partir da sessão do DOS, mas não a partir do shell git .
(não que, com o mecanismo de configuração core.editor, um script com "
start /WAIT...
" não funcione, mas apenas abra uma nova janela do DOS)A resposta de Bennett menciona a possibilidade de evitar a adição de um script, mas de referenciar diretamente o próprio programa entre aspas simples . Observe a direção das barras! Use
/
NÃO\
para separar pastas no nome do caminho!Ou se você estiver em um sistema de 64 bits:
Mas prefiro usar um script (veja abaixo): dessa forma, posso jogar com caminhos diferentes ou opções diferentes sem precisar me registrar novamente a
git config
.A solução real (com um script) foi perceber que: o
que você se refere no arquivo de configuração é na verdade um
/bin/sh
script shell ( ) , não um script DOS.Então, o que funciona é:
com
C:/prog/git/npp.bat
:ou
Com essa configuração, eu posso fazer '
git config --global --edit
' a partir do DOS ou Git Shell, ou eu posso fazer 'git rebase -i ...
' a partir do DOS ou Git Shell.Os comandos bot acionam uma nova instância do bloco de notas ++ (daí a
-multiInst
opção ') e aguardam o fechamento dessa instância antes de continuar.Observe que eu uso apenas '/', não
\
'. E instalei o msysgit usando a opção 2. (Adicione ogit\bin
diretório àPATH
variável de ambiente, mas sem substituir algumas ferramentas internas do Windows)O fato de o wrapper do bloco de notas ++ ser chamado .bat não é importante.
Seria melhor chamá-lo de 'npp.sh' e colocá-lo no
[git]\cmd
diretório (ou em qualquer diretório referenciado pela sua variável de ambiente PATH).Veja também:
lightfire228 acrescenta nos comentários :
fonte
git config
configurações.dir /X
equivalente abreviado : "PROGRA~2
" for "Program Files (x86)
", que é um bom hábito de se usar ao usar ferramentas compatíveis com várias plataformas no Windows, o que permite compactar o espaço em branco.Com base na resposta de Darren , para usar o Notepad ++, você pode simplesmente fazer isso (tudo em uma linha):
Obviamente, a
C:/Program Files/Notepad++/notepad++.exe
parte deve ser o caminho para o executável do Notepad ++ no seu sistema. Por exemplo, pode serC:/Program Files (x86)/Notepad++/notepad++.exe
.Funciona como um encanto para mim.
fonte
De qualquer forma, acabei de brincar com isso e achei o seguinte a funcionar bem para mim:
Eu não acho que o CMD gosta de aspas simples, então você deve usar aspas duplas "para especificar o argumento da string incorporada no espaço".
Cygwin (que acredito ser a plataforma subjacente do Bit do Git), por outro lado, gosta de ambos
'
e"
; você pode especificar caminhos do tipo CMD, usando em/
vez de\
, desde que a string seja citada, ou seja, neste caso, usando aspas simples.A
-m
substituição / indica o uso de vários editores e não há necessidade de uma%*
tachinha no final.fonte
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"
funciona como um encanto para mim.editor = notepad
Edit: Depois de atualizar para o Vim 7.3, cheguei à conclusão de que a maneira mais limpa e fácil de fazer isso é:
Adicione a pasta principal do Vim ao seu caminho (clique com o botão direito do mouse em Meu computador → Propriedades → Avançado → Variáveis de ambiente )
Rode isto:
Se você fizer dessa maneira, tenho certeza de que também funcionará com o Cygwin.
Resposta original:
Mesmo com algumas respostas relacionadas ao Vim, eu estava tendo problemas para que isso funcionasse com o gVim no Windows (sem usar um arquivo em lotes ou% EDITOR% ou Cygwin).
O que finalmente cheguei é agradável e limpo e parte de algumas das soluções aqui:
Um problema que me levou um tempo é que essas não são as barras invertidas no estilo do Windows. Eles são barras dianteiras normais.
fonte
Program Files(x86)
, você precisará alterar o caminho obviamente.O Notepad ++ funciona muito bem, embora eu opte por usar o Notepad, -m, ou mesmo algumas vezes a "edição" incorporada.
O problema que você está enfrentando usando o Notepad ++ está relacionado a como o Git está iniciando o executável do editor. Minha solução para isso é definir a variável de ambiente
EDITOR
para um arquivo em lotes, em vez do executável real do editor, que faz o seguinte:/WAIT
solicita que a sessão da linha de comando seja interrompida até que o aplicativo termine; assim, você poderá editar o conteúdo do seu coração enquanto o Git espera por você. % * passa todos os argumentos para o arquivo em lotes através do Notepad ++.fonte
WordPad !
Fico feliz em usar o Vim, mas como estou tentando apresentar o Git à empresa, queria algo que todos tivéssemos e descobri que o WordPad parece funcionar bem (por exemplo, o Git espera até que você termine de editar e fechar a janela).
Isso está usando o Git Bash no msysgit; Eu não tentei no prompt de comando do Windows (se isso faz alguma diferença).
fonte
Eu também uso o Cygwin no Windows, mas com o gVim (em oposição ao Vim baseado em terminal ).
Para fazer isso funcionar, eu fiz o seguinte:
git_editor.bat
) que contém o seguinte:"C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
git_editor.bat
no meuPATH
.GIT_EDITOR=git_editor.bat
Com isso feito
git commit
,, etc. invocará corretamente o executável gVim.NOTA 1: A
--nofork
opção para gVim garante que ele bloqueie até que a mensagem de confirmação seja gravada.NOTA 2: As aspas ao redor do caminho para o gVim são necessárias se você tiver espaços no caminho.
NOTA 3: As aspas em torno de "% *" são necessárias caso o Git passe um caminho de arquivo com espaços.
fonte
Graças à comunidade Stack Overflow ... e um pouco de pesquisa, consegui que meu editor favorito, o EditPad Pro , funcionasse como editor principal com o msysgit 1.7.5.GIT e o TortoiseGit v1.7.3.0 no Windows XP SP3. ..
Seguindo o conselho acima, adicionei o caminho a um script Bash para o editor de código ...
No entanto, após várias tentativas fracassadas das soluções mencionadas acima, finalmente consegui fazer isso funcionar. Pela documentação do EditPad Pro, adicionar o sinalizador '/ newinstance' permitiria ao shell aguardar a entrada do editor ...
A bandeira ' / newinstance ' foi a chave no meu caso ...
fonte
/newinstance
que tenham exatamente uma barra. Isso é bastante normal para aplicativos do Windows. Se você estiver invocando o EditPad a partir de um shell UNIX, precisará usar qualquer mecanismo que seu shell ofereça para escapar da barra para que ele não veja a opção como um caminho absoluto e passe uma única barra literal para a linha de comando do EditPad./wait
chave na linha de comando do EditPad. Você pode usar/wait
com ou sem/newinstance
para controlar se uma nova janela do EditPad deve ser aberta ou se uma janela existente deve ser reutilizada. O processo iniciado pelo seu script aguardará o fechamento do arquivo, independentemente de uma janela ter sido criada ou reutilizada. O EditPad Pro 6 e anterior não são compatíveis/wait
./wait
senhor ponta bandeira ... :)[core]
seção .gitconfig para incluir a linhaeditor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance"
.Para Atom você pode fazer
e semelhante para o Visual Studio Code
que abrirá uma janela de código Atom ou Visual Studio para você confirmar,
ou para texto sublime :
fonte
Edite o arquivo .gitconfig na pasta c: \ Users \ YourUser e adicione:
fonte
Este é o sintoma de maiores problemas. Notavelmente, você tem algo definido
TERM=dumb
. Outras coisas que não funcionam corretamente são asless
comando que diz que você não tem um terminal totalmente funcional.Parece que isso é mais comumente causado pelo fato de o TERM ter definido como algo nas variáveis de ambiente globais do Windows. Para mim, o problema surgiu quando instalei o Strawberry Perl. Algumas informações sobre isso estão no bug do msysgit para esse problema. , além de várias soluções.
A primeira solução é corrigi-lo no seu ~ / .bashrc adicionando:
Você pode fazer isso no prompt do Git Bash da seguinte maneira:
A outra solução, que finalmente foi o que eu fiz, porque não me importo com os motivos do Strawberry Perl para adicionar
TERM=dumb
às minhas configurações de ambiente, é remover oTERM=dumb
conforme indicado neste comentário no relatório de bug do msysgit .Da mesma forma, se você usa o Strawberry Perl e se preocupa com o cliente CPAN ou algo parecido, pode deixar em
TERM=dumb
paz e usarunset TERM
no seu arquivo ~ / .bashrc, que terá um efeito semelhante ao definir um termo explícito como acima.Obviamente, todas as outras soluções estão corretas, pois você pode usar
git config --global core.editor $MYFAVORITEEDITOR
para garantir que o Git use seu editor favorito quando precisar iniciar um para você.fonte
O Vim / gVim funciona bem para mim.
fonte
Eu tinha o PortableGit 1.6 funcionando bem, mas depois de atualizar para a versão do Windows PortableGit 1.7, tive problemas. Alguns dos comandos do Git abrem o Notepad ++. Exe, mas outros não, especialmente o Git rebase se comporta de maneira diferente.
O problema é que alguns comandos executam o processo cmd do Windows e outros usam o processo cmd do Unix. Quero atribuir atributos de inicialização ao editor do Notepad ++, portanto, preciso ter um script personalizado. Minha solução é essa.
Crie um script para executar um editor de texto apropriado. O script parece estranho, mas lida com as variações do Windows e do Unix.
c: /PortableGit/cmd/git-editor.bat
Defina a variável global core.editor
O script foi salvo na pasta git / cmd, portanto já está no caminho do gitconsole. Isso é obrigatório, pois um caminho completo pode não funcionar corretamente.
Agora eu posso executar os comandos git commit -a e git rebase -i master . Experimente se você tiver problemas na ferramenta Git Windows.
fonte
Eu uso o Git em várias plataformas e gosto de usar as mesmas configurações do Git em todas elas. (Na verdade, eu tenho todos os meus arquivos de configuração sob controle de liberação com o Git e coloco um clone do repositório Git em cada máquina.) A solução que surgiu foi a seguinte:
Eu coloquei meu Defino editor como giteditor
Então eu criar um link simbólico chamado giteditor que está no meu PATH . (Eu tenho um diretório bin pessoal , mas em qualquer lugar do PATH funciona.) Esse link aponta para o meu atual editor de escolha. Em máquinas diferentes e plataformas diferentes, eu uso editores diferentes, então isso significa que não preciso alterar minha configuração universal do Git ( .gitconfig ), apenas o link para o qual o giteditor aponta.
Links simbólicos são tratados por todos os sistemas operacionais que eu conheço, embora possam usar comandos diferentes. Para Linux, você usa ln -s . Para o Windows, você usar o cmd built-in mklink . Eles têm sintaxes diferentes (que você deve procurar), mas tudo funciona da mesma maneira, na verdade.
fonte
error: cannot spawn giteditor: No such file or directory
Com base na sugestão de VonC , isso funcionou para mim (estava me deixando louco):
A omissão
-wait
pode causar problemas, especialmente se você estiver trabalhando com o Gerrit e alterar os IDs que precisam ser copiados manualmente na parte inferior da sua mensagem de confirmação.fonte
Eu precisava fazer ambos dos seguintes para obter Git para lançar Notepad ++ no Windows:
Adicione o seguinte ao .gitconfig:
Modifique o atalho para iniciar o shell do Git Bash para executar como administrador e use-o para iniciar o shell do Git Bash. Eu estava supondo que a entrada do menu de contexto "Git Bash aqui" não estava iniciando o Notepad ++ com as permissões necessárias.
Depois de fazer as duas opções acima, funcionou.
fonte
Eu uso o Cygwin no Windows, então eu uso:
O objetivo
-nw
éno-windows
, ou seja, diga ao Emacs para não tentar usar o X Window .As combinações de teclas do Emacs não funcionam para mim a partir de um shell do Windows, então eu usaria isso apenas a partir de um shell Cygwin ... ( recomenda-se o rxvt .)
fonte
Esta é minha configuração para usar o Geany como editor do Git:
com o seguinte conteúdo em
geany.bat
:Ele funciona no console do DOS e no msysgit.
fonte
Parece que o Git não encontrará o editor se houver espaços no caminho. Portanto, você precisará colocar o arquivo em lotes mencionado na resposta de Patrick em um caminho que não seja um espaço em branco.
fonte
Tive dificuldade em fazer o Git cooperar com o WordPad , o Komodo Edit e praticamente todos os outros editores que eu dou. É mais aberto para edição, mas o Git claramente não espera que o salvar / fechar ocorra.
Como muleta, eu acabei de fazer ie
para manter as coisas em movimento. Isso tende a manter minhas mensagens de confirmação um pouco mais curtas do que deveriam, mas claramente há algum trabalho a ser feito na versão do Git para Windows.
O GitGUI também não é tão ruim assim. É preciso um pouco de orientação, mas depois disso, funciona bastante bem.
fonte
Eu prefiro usar o Emacs. Configurá-lo pode ser um pouco complicado.
c:\emacs
.c:\emacs\bin\addpm.exe
. Você precisa clicar com o botão direito e "Executar como administrador" se estiver usando o Windows Vista ou superior. Isso colocará os executáveis no seu caminho.(server-start)
em algum lugar do seu.emacs
arquivo. Consulte as Perguntas frequentes do Windows Emacs para obter conselhos sobre onde colocar seu.emacs
arquivo.git config --global core.editor emacsclientw
O Git agora abrirá arquivos dentro de um processo Emacs existente. Você precisará executar esse processo existente manualmente a partir de
c:\emacs\bin\runemacs.exe
.fonte
Consegui fazer a versão do ambiente funcionar, definindo a variável EDITOR usando aspas e
/
:fonte
Acabei de ter o mesmo problema e encontrei uma solução diferente. eu estava conseguindo
Eu tenho
VISUAL=ec
, e um arquivoec.bat
em lotes chamado no meu caminho que contém uma linha:Isso permite editar arquivos a partir da linha de comando
ec <filename>
e, comVISUAL
set, significa que a maioria dos programas unixy também os pega. O Git parece procurar o caminho de maneira diferente dos meus outros comandos - quando olhei para umgit commit
no Process Monitor , vi-o procurar em todas as pastas do caminho paraec
e paraec.exe
, mas não paraec.bat
. Eu adicionei outra variável de ambiente (GIT_EDITOR=ec.bat
) e tudo estava bem.fonte
Estou usando o GitHub para Windows, que é uma boa opção visual. Mas também prefiro a linha de comando; portanto, para fazê-lo funcionar quando abro um repositório em um shell Git, basta definir o seguinte:
o que funciona muito bem
fonte
Isso funciona para o PowerShell e o cmder 1.2 (quando usado com o PowerShell). No arquivo
~/.gitconfig
:Como tornar o Sublime Text o editor padrão do Git?
fonte
Encontrei uma solução lindamente simples postada aqui - embora possa haver um erro no caminho em que você deve copiar o arquivo "subl" fornecido pelo autor.
Estou executando o Windows 7 x64 e tive que colocar o arquivo "subl" na minha
/Git/cmd/
pasta para fazê-lo funcionar.Funciona como um encanto, no entanto.
fonte
Atom e Windows 10
Digitei isso no Git Bash:
Nota: eu mudei tudo
\
por/
. Criei um .bashrc no meu diretório pessoal e usei/
para definir o meu diretório pessoal e ele funcionou, então eu assumi/
que seria o caminho a seguir.editor-atom git git-bash windows-10
fonte
Aqui está uma solução com Cygwin:
Se não houver caminho, não passe nenhum caminho
Se o caminho estiver vazio, passe o caminho vazio
Se o caminho não estiver vazio, converta para o formato Windows.
Então eu defino estas variáveis:
EDITOR permite que o script funcione com o Git
GIT_EDITOR permite que o script funcione com os comandos do Hub
Fonte
fonte
Isso está funcionando para mim usando o Cygwin e o TextPad 6 (EDIT: também funciona com o TextPad 5, desde que você faça a alteração óbvia no script) e, presumivelmente, o modelo também poderia ser usado por outros editores:
Arquivo
~/.gitconfig
:Arquivo
~/script/textpad.sh
:Essa linha única também funciona:
Arquivo
~/script/textpad.sh
(opção 2):fonte
Isso funcionou para mim:
É isso aí!
NOTA: O Texto Sublime 3 é o editor que usei para este exemplo.
fonte