Como você pode desabilitar a integração do Git no Visual Studio 2013 permanentemente?

113

Eu sei que você pode desabilitar a integração do git usando a caixa de diálogo Ferramentas / Opções, mas o que percebi é que essa configuração não parece persistir nas sessões; ou seja, assim que fechar e reabrir a solução, a integração do Git é habilitada novamente. Estou supondo que o Visual Studio está vendo a pasta .git na minha árvore do sistema de arquivos da solução.

Há uma variedade de plug-ins do Visual Studio 2013 que se comportam incorretamente quando o plug-in Git está habilitado. Eu prefiro gerenciar meu controle de origem na linha de comando e trabalho em alguns projetos muito grandes para os quais a integração do Git introduz lentidões perceptíveis em abrir e trabalhar com a solução. Gostaria de desativá-lo para sempre, pois simplesmente não o uso ou preciso. Isso é possível?

Bryan Porter
fonte
1
possivelmente útil: Para corrigir isso, desativei a extensão e alterei o controle de origem usando a função 'Vincular' do comando Alterar controle de origem - Veja mais em: thereprogram.com/2013/04/18/visual-studio-tools-for- git /…
Tom Kerr
1
Esse é o truque - no Visual Studio 2013, a integração do Git não é fornecida como uma extensão, é incorporada. Não é possível desativar a extensão, pois não há extensão para desativar. Vaia!
Bryan Porter
talvez você pudesse automatizar isso?
klumsy
Eu poderia, mas qual gatilho eu usaria para executar a automação? Uma extensão que dispara durante o carregamento? Escrever uma extensão para desabilitar um recurso OOB parece estranho.
Bryan Porter
1
Minha equipe também teve esse problema. Acho que o truque que usamos foi carregar uma solução, desabilitar a integração git e reiniciar o VS. Você também pode tentar instalar o SP 1.
Ade Miller

Respostas:

90

Como você disse, você pode desativar o plugin de controle de origem indo para:

  • Ferramentas / Opções
  • Marque "Mostrar todas as configurações"
  • Seleção de controle / plug-in de fonte
  • Defina "Plug-in de controle da fonte atual" como "Nenhum"

Então, como Ade Miller diz: Reinicie o Visual Studio.

Meu Visual Studio estava funcionando muito devagar desde que o git plugging foi habilitado e eu consegui desabilitá-lo "persistentemente entre as sessões" seguindo estas etapas.

Espero que ajude.

Aebsubis
fonte
42
Acho que o VS simplesmente reativa o GIT ao reabrir a solução. Além disso, a extensão NoGit mencionada abaixo não funciona. Hmm.
mackenir
Eu tenho o mesmo problema. O VS simplesmente reativa a integração do GIT na reinicialização do VS. Observe que eu o desativei conforme descrito acima dezenas de vezes agora. (continua voltando)
Venryx
1
ele também o reativa para mim. aparentemente, alguém escreveu uma extensão que o desativa na inicialização. louco! stackoverflow.com/questions/22459959/… . outro hack neste link é remover a permissão de Todos para o provedor dll: C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TeamFoundation \ Team Explorer \ Microsoft.TeamFoundation.Git.Provider. dll
Sonic Soul
3
Descobri que abrir a janela do Team Explorer o reativou para mim. Então, fechei a janela e voltei a opção para Nenhum. Espero que VS não tente me "ajudar" novamente neste caso.
Sean
Sem nenhuma solução carregada, alterei a configuração do plugin de controle de origem de Git de volta para Nenhum. Em seguida, reiniciei o Visual Studio (ainda sem solução) e verifiquei a configuração, e agora era Visual Studio Team Foundation Server. Eu o configurei de volta para Nenhum novamente e reiniciei o VS novamente, e desta vez ele parece ter travado.
Adrian McCarthy
52

Eu tive o mesmo problema com o Visual Studio 2015, onde a extensão NoGit nem tinha permissão para instalar. Eu uso a opção "abrir a última solução na inicialização", então pensei que talvez isso estivesse de alguma forma relacionado ao problema.

Então eu simplesmente fechei minha solução antes de ir para "Ferramentas - Opções - Controle de código-fonte", então desliguei, reiniciei o VS e - voila, o SC permaneceu desligado! Espero que continue assim em outras soluções também.

Artalus
fonte
2
Mil vezes isso. Sem hack do registro, sem extensão customizada, isso funciona. Obrigado !
driis
1
Eu tive que combinar isso com uma outra coisa: eu atualizei meu atalho no menu Iniciar VisualStudio para incluir este sinalizador de linha de comando: /ResetSettings "C:\Users\myuserid\Documents\Visual Studio 2015\Settings\CurrentSettings.vssettings". De acordo com a referência da linha de comando, esta configuração "Restaura as configurações padrão do IDE, opcionalmente redefine para o arquivo VSSettings especificado." Isso parece garantir que minhas configurações desejadas sejam aplicadas sempre.
mcw
4
Obrigado! Isso funcionou para mim. Outra observação - certifique-se de fechar a guia Visualizador de equipe no lado direito (próximo ao Gerenciador de Soluções) antes de fazer isso, ou ele será reativado automaticamente se você clicar nele.
ForOhFor
2
Certifique-se de matar o processo devenv.exe fugitivo que fica por aí depois que o VS travar, deixando pelo menos uma de suas CPU presa, caso contrário, você pode fazer isso repetidamente e ela não pegará. Mas fico feliz quando isso acontece e nenhum hack do registro é necessário!
Atters
19

Para mim, criar o repositório com o seguinte comando corrige o problema:

git init --separate-git-dir _git

Uma vez que não cria um .git diretório , apenas um .git arquivo apontando para o diretório real do repositório, por exemplo:

gitdir: C:/tfs/ProjectName/Main/_git

O Visual Studio (pelo menos até o VS2015 Update 3, que é o que eu uso) não percebe!

Isso funcionou melhor do que as coisas de variável de ambiente porque as extensões Git (que estou usando) tiveram problemas para suportar isso, mas lidou com o .gitarquivo apontando para uma _gitpasta perfeitamente.

Alex
fonte
Concordo, eu também prefiro não mexer com as coisas das variáveis ​​de ambiente. Isso funciona muito bem.
kaveman
Acrescentarei que há um pequeno erro de digitação acima, a opção é--separate-git-dir
kaveman
2
Solução alternativa incrível! Graças a Deus, o VS2013 não implementou a leitura deste .git"link simbólico Git independente do sistema de arquivos para o repositório", ou teríamos encontrado o mesmo problema.
KurzedMetal
2
Esta é de fato a solução mais simples existente em toda a cadeia de respostas.
Tarik
1
Muito obrigado pela dica! Já que a extensão `NoGit 'do Visual Studio não funciona com o VS 2017, esta é a única maneira de interromper o" git-monitoring "do VS 2017 :-) Obrigado! 👍
Ruslan Garipov
11

Um motivo para o git SCC ser reativado no VS2015 toda vez que o IDE carrega é o CodeLens. Ferramentas / Opções / Editor de texto / Todos os idiomas / CodeLens Há uma caixa de seleção para várias atividades envolvendo TFVS e Git - ter qualquer uma dessas caixas de seleção git marcadas ativará automaticamente o plug-in Git se ele achar que você está trabalhando em um repositório git.

John Brett
fonte
Uma resposta funcional (para mim) que não sugere remover a solução do controle de origem ou danificar a instalação do VS.
Evren Kuzucuoglu
Esta é a solução certa.
Juan Pablo Califano
Isso é muito importante, pois vi que o Visual Studio 2017 substitui a coisa trivial de desabilitar o controle de origem. Mas parece que mesmo depois disso o VS 2017 cria uma .vspasta.
Royi,
8

A extensão NoGit Visual Studio lida com esse comportamento.

Bônus: descrição incrível.

mxmissile
fonte
ele não funciona mais com VS2013 SP3, infelizmente
thumbmunkeys
Estou usando o VS 2013 Update 4 e ainda está funcionando bem para mim.
mxmissile
Eu confundi a integração do git com as informações do git mostradas nos codelens ... obrigado pelo esclarecimento!
thumbmunkeys
3
Também não é compatível com 2015
Ben Wilde
@BenWilde Nova versão funciona com VS 2015 Update 1 (pegue aqui: github.com/hmemcpy/nogit )
Ruslan Garipov
8

Para o Visual Studio 2015, descobri que o CodeLens estava reativando o plug-in Git Source Control após reiniciar. Desativar CodeLens corrigiu isso.

Ed Andersen
fonte
Isso é importante para desabilitar o GIT no Visual Studio 2017. Grande pegadinha!
Royi
6

(Atualização: esta resposta agora fornece uma solução totalmente funcional com base em meu conhecimento mais profundo de GIT_DIR e GIT_WORK_TREE)

Resumo: Git é flexível o suficiente para que você possa mover o .gitdiretório para um local fora do diretório de trabalho com os arquivos retirados do tfs. Isso torna possível ter um checkout de tfs 100% limpo, sem nenhum traço de git que o visual studio seja capaz de detectar enquanto ainda é capaz de operá-lo como um repositório git. A chave é separar o dir git (armazenamento do repositório git) e a árvore de trabalho (seu código-fonte retirado).

Digamos que seu código-fonte foi retirado c:\work\someproject\tfscodee você já o executou git init, por exemplo, o visual studio detecta o c:\work\someproject\tfscode\.gitdiretório e isso causa problemas.

Para tornar a vida mais agradável, faça o seguinte:

$ cd /cygdrive/c/work/someproject
$ mv tfscode/.git tfscode.git
$ echo export GIT_DIR=/cygdrive/c/work/someproject/tfscode.git >> env.sh
$ echo export GIT_WORK_TREE=/cygdrive/c/work/someproject/tfscode >> env.sh
$ source env.sh
$ cd tfscode
$ git status
...
$

Isso funciona perfeitamente no que diz respeito ao Visual Studio, já que ele ignora completamente qualquer coisa armazenada no git.

Hlovdal
fonte
A propósito, git-tf naturaly não gosta dos caminhos cygwin, então use GIT_...=c:/work/...se você planeja usar git tf.
hlovdal
Isso é ótimo, mas devo usar o caminho de estilo c: / work / ... em vez do estilo \ c \ work \ ...
zumalifeguard
6

Isso funcionou para mim no Visual Studio 2013 e 2015. Persiste mesmo que você feche e reabra o Visual Studio.

  1. Abra a solução

  2. Vá para Ferramentas -> Opções -> Controle de código-fonte -> Definir plug-in como Nenhum

  3. Feche o Visual Studio e execute o comando abaixo com direitos administrativos.

mover "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TeamFoundation \ Team Explorer \ Microsoft.TeamFoundation.Git.Provider.dll" "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TeamFoundation \ Team Explorer \ Microsoft.TeamFoundation.Git.Provider.dll.bak "
sb.olofsson
fonte
Atualização 1 do VS 2015: O provedor MSFT TFS não funciona depois disso
Ruslan Garipov
... ou você pode simplesmente desabilitar o CodeLens como @John Brett sugere.
mike
6

Remova o Microsoft GitProvider do Visual Studio 2015

Link: http://researchaholic.com/2015/02/02/remove-the-microsoft-gitprovider-from-visual-studio-2013/

  1. Certifique-se de que o Visual Studio esteja fechado
  2. Abrir regedit
  3. Navegue até HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ SourceControlProviders
  4. Excluir 11b8e6d7-c08b-4385-b321-321078cdd1f8 No painel de detalhes, deve ser GitProvider
  5. Abra o Visual Studio
Maks
fonte
1
melhoria desta resposta - aplique o seguinte arquivo reg Windows Registry Editor Versão 5.00 [-HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0_Config \ SourceControlProviders \ {11b8e6d7-c08b-4385-b321-321078cdd1f8}]
Ivan Shakhov
4

Consegui desativar o Provedor Git do Visual Studio integrado, excluindo todas as ocorrências dessas chaves de registro:

7FE30A77-37F9-4CF2-83DD-96B207028E1B

11b8e6d7-c08b-4385-b321-321078cdd1f8

Boklucius
fonte
1
Isso funciona para mim! Obrigado! Mas uma pergunta permanece: Se eventualmente eu atualizo o VS (fazendo uma atualização secundária ou principal), terei que deletar as chaves novamente?
Ruslan Garipov
4

Use o novo pacote de extensão NoGit: https://github.com/markrendle/nogit/releases/download/1.0.5/NoGit.vsix

Baixe e adicione ao Visual Studio: /superuser/73675/how-do-i-install-a-vsix-file-in-visual-studio

Fácil.

Ben Wilde
fonte
Para instalar, prefiro alterar manualmente a extensão .vsix para .zip, para que você possa clicar com o botão direito e extrair os arquivos. Em seguida, tudo o que você precisa fazer é colocar a nova pasta extraída na pasta de dados do aplicativo de usuários (% appdata% \ Local \ Microsoft \ VisualStudio \ {version} \ Extensions). Em seguida, reinicie o Visual Studio, abra Ferramentas-> Extensões e Atualizações ..., encontre "NoGit" e ative-o, e reinicie novamente.
Ben Wilde
4

Foi uma dor nas costas por uma semana e eu não sabia como comecei este serviço de controle de origem no VS2015. Mas tenho que saber como parar. Aqui estão as etapas para desacoplar git / qualquer controle de origem do VS2019.

Vá para VS -> Ferramentas -> Opções -> Controle de fonte -> [Plug-in de controle de fonte atual]

Você obtém todo o controle de origem possível em seu sistema e a opção Nenhum. Se você escolher Nenhum, está tudo pronto. O meu foi consertado logo após selecionar a opção Nenhum, aperte ok e reinicie o VS e não mais controle de fonte.

SRoy
fonte
3

Você precisa fechar todas as soluções VS. inicie um, defina Menu \ tools \ options \ Source Control \ Git -> None, feche esta solução quando solicitado. Agora, ao abrir qualquer outra solução, as opções ficam em "Nenhum".

Sergei Meleshchuk
fonte
1

O VS2015 estava sugando 50% da minha CPU quando ocioso. Aprendi que desativar o Git era a solução. Infelizmente, desabilitar o Git apenas para aprendê-lo o reabilita automaticamente.

No meu caso, eu realmente queria usar o Git, mas não com 50% de uso da CPU.

Como a solução NoGit está disponível apenas para VS2013, você pode baixar: Git Source Control Provider mesmo se você não usar o Git. Meu uso de CPU agora é de 2,2% em vez de 50% quando ocioso.

bluee
fonte
1

Também estou tendo problemas com o Git no Visual Studio, mas acho que finalmente encontrei uma solução de trabalho. Até agora, usei o truque de renomear a pasta .git para _git e adicionar um arquivo de texto chamado .git contendo a linha "gitdir: _git". Mas desde a atualização para o VS2019 isso não funciona mais.

Eu tentei muitas soluções diferentes, mas nenhuma funcionou, pois preciso do Git para alguns projetos e não para outros. Meu projeto problemático é usar o Team Foundation Server da minha empresa para controle de origem. Mas, como perdi código em mesclagens incorretas feitas pelo TFS, estou enviando minhas alterações para um repositório Git local antes de atualizar ou me comprometer com o TFS.

D:\Projects\TFS\.git Repo local git que o VS não deve usar.

D:\Projects\TFS\ProjectA\$tf Arquivos TFS que o VS deve usar para o ProjectA.

Não importa o quanto eu tentei, não consegui que o VS usasse o TFS para ProjectA quando encontrou uma pasta .git em uma pasta pai. Minha solução é mover a pasta .git para:

D:\Projects\TFS-GIT\.git

e crie uma junção de diretório para a pasta ProjetoA. Inicie um prompt de comando elevado e execute:

mklink /J D:\Projects\TFS-GIT\ProjectA D:\Projects\TFS\ProjectA

Abrindo D:\Projects\TFS\ProjectA\ProjectA.slnno Visual Studio, ele não encontrará nenhuma pasta .git e se conectará ao TFS como deveria.

Executar comandos git de D:\Projects\TFS-GITusará os mesmos arquivos do Visual Studio, exceto que a pasta .git também está disponível. TortoiseGit também funciona bem nesta pasta.

Anlo
fonte
0

Tive muita dificuldade em encontrar uma solução para isto, e consegui depois de tantas tentativas, por isso não posso ser preciso. Crie outro repositório local usando o GitHub Desktop em outra pasta. Feito isso, abra o Visual Studio sem carregar um projeto, agora o Team Explorer deve mostrar os dois repositórios. Selecione o novo repositório como você deve fazer algumas operações, neste ponto você pode "remover" seu antigo repositório, já que o novo é o "ativo". Depois de fazer isso, removi os arquivos .hidden .git * da pasta anterior. Agora, abrir o projeto não faz com que o repositório antigo seja recriado novamente. Espero que isto ajude.

Stefano Losi
fonte
0

Isso é loucura, mas o que funcionou para mim foi esvaziar minha lixeira (que continha a pasta indesejada .git da minha solução).

Ainda não consigo acreditar ...

Jérôme MEVEL
fonte
0

Renomear "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TeamFoundation"

O VS mostrará erro apenas uma vez e funcionará bem.

Ivan Shakhov
fonte
0

Este inferno de extensão git retarda tudo no IDE (VS 2015 no meu caso). Tive que remover toda a pasta TeamFoundation para me livrar disso. A desvantagem é que você não poderá usar Git e TeamFoundation no Visual Studio 2015. Observação: faça backup desta pasta em outro lugar e restaure-a quando necessário.

Para excluir a pasta, fiz isso. As etapas que segui para excluir a pasta certa

O motivo pelo qual fiz isso é porque o VS 2015 gera um nome de pasta aleatório para a extensão TeamFoundation, então meu nome de pasta pode ser diferente do seu.

Soundararajan
fonte
-2

Ferramentas, opções, controle de fonte, seleção de plug-in, nenhum

Dale Fraser
fonte
8
O Visual Studio 2013 não manterá essa alteração. Na próxima vez que você abrir a solução, ela selecionará novamente o plug-in Git automaticamente se detectar um diretório .git. Ele fará isso até mesmo se a solução já estiver vinculada ao TFVC.
Mark W Dickson
-4

1) solução próxima e estúdio visual. 2) vá para o diretório da solução e exclua o diretório git oculto e 2 arquivos de texto git. 3) abra o Visual Studio novamente. 4) goto tools -> options and source control. 5) selecione nenhum. 6) reinicie o Visual Studio. 7) abra sua solução. 8) goto tools -> options and source control novamente e selecione TFS. 9) na solução, clique com o botão direito para selecionar adicionar controle de origem à solução. 10) selecione tfs.

user1813748
fonte
Eles não querem o TFS e certamente NÃO QUEREM excluir a pasta .git, pois isso apagará todo o histórico de commits locais. O que eles pedem é como evitar que o VS use informações da pasta .git, não como limpar essa pasta.
quetzalcoatl
-5

Defina Tools \ Options \ Source Control de volta para TFS. Feche o Visual Studio 2015. Abra a pasta raiz do seu código-fonte. Exclua a pasta chamada ".git". Reiniciar.

Charlie Benson
fonte
4
Isso soa como se você estivesse pedindo ao op para remover completamente a pasta do git. "Prefiro gerenciar meu controle de origem na linha de comando" parece indicar que não seria a solução para ele.
Evren Kuzucuoglu