Usando o Git com o Visual Studio [fechado]

1455

Como usuário de longa data do Visual SourceSafe (e odiador), eu estava discutindo a mudança para o SVN com um colega; ele sugeriu usar o Git . Como, aparentemente, ele pode ser usado como ponto a ponto sem um servidor central (somos uma equipe de 3 desenvolvedores).

Porém, não consegui encontrar nada sobre ferramentas que integram o Git ao Visual Studio - existe algo assim?

Quais são as tecnologias disponíveis para usar o Git com o Visual Studio? E o que preciso saber sobre como elas diferem antes de começar?

Caudill de ervas
fonte
4
Acabei de adicionar o Git Source Control Provider para o VS 2010, portanto ainda funciona.
precisa saber é o seguinte
3
Checkout Este tutorial da equipa VS . A próxima atualização; A atualização 2 do VS 2012 está chegando a qualquer dia. Você também pode baixar a CTP (Community Technology Preview) para VS2012 aqui . Como alternativa, se você gosta de CMMI, Agile, Scrum 1/2 etc., pode se inscrever em uma conta gratuita (instâncias de nuvem pública ou privada) e convidar membros (colegas de equipe, clientes) para o seu projeto no TFS baseado na web tfs.visualstudio. com
Annie
3
Estou usando o Visual Studio e o git há dois anos. Eu diria que a melhor solução para esse problema é usar apenas um aplicativo de controle de origem separado, como o Atlassians SourceTree. É gratuito, fácil de instalar, possui uma boa interface gráfica e é fácil de usar, você pode navegar em vários repositórios (também conhecidos como projetos diferentes), assim como navegaria na Web no Chrome e, o mais importante, oferecer suporte a vários sistemas de controle de origem. De uma chance! Você não ficará desapontado, garanto!
Fazi
2
Git é suportado nativamente a partir de Visual Studio 2013
rustyx
17
Eu amo como 1342 pessoas votaram positivamente nesta questão e algum idiota chega e fecha de qualquer maneira. Bom trabalho StackOverfolow .... O que importa se não se encaixa nos critérios da SO, se tantas pessoas o consideram útil. O objetivo deste site não é ser útil?
thebunnyrules

Respostas:

1070

Em janeiro de 2013, a Microsoft anunciou que estava adicionando suporte completo ao Git em todos os seus produtos ALM. Eles publicaram um plug-in para o Visual Studio 2012 que adiciona a integração de controle de origem do Git.

Como alternativa, existe um projeto chamado Git Extensions que inclui suplementos para o Visual Studio 2005, 2008, 2010 e 2012, além da integração do Windows Explorer. É atualizado regularmente e, tendo sido usado em alguns projetos, achei muito útil.

Outra opção é o Git Source Control Provider .

Jon Rimmer
fonte
9
ted.dennison: de acordo com esta página ( code.google.com/p/gitextensions ), é um plug-in do VS 2005/2008.
Jonas
10
Para me corrigir - a fonte está hospedada no Github, os MSIs não estão.
Chris S
5
Eu instalei extensões git, ele funciona "por" visual studio e não está totalmente integrado. Existe uma solução que permita o check-in - check-out no Solution Explorer?
21711 Dani
4
Dani, alguém está trabalhando em um provedor de controle de origem Git para VS que parece fornecer um nível ligeiramente mais profundo de integração: gitscc.codeplex.com
Jon Rimmer
3
Existem opções para o VS 2012?
Earth Engine
202

Eu uso o Git com o Visual Studio para minha porta de Buffers de Protocolo para C #. Não uso a GUI - apenas mantenho uma linha de comando aberta e o Visual Studio.

Na maioria das vezes, tudo bem - o único problema é quando você deseja renomear um arquivo. Ambos Git e Visual Studio preferiria que eles eram o único a renomeá-lo. Eu acho que renomear no Visual Studio é o caminho a seguir - apenas tome cuidado com o que você faz no lado do Git posteriormente. Embora isso tenha sido um pouco doloroso no passado, ouvi dizer que, na verdade, deve ser bastante transparente do lado do Git, porque pode-se notar que o conteúdo será basicamente o mesmo. (Normalmente não é o mesmo - você costuma renomear um arquivo ao renomear a classe IME.)

Mas basicamente - sim, funciona bem. Sou novato no Git, mas consigo fazer tudo o que preciso. Verifique se você possui um arquivo git ignore para bin e obj e * .user.

Jon Skeet
fonte
35
O git deve ficar bem com o VS fazendo a renomeação. Para um bom rastreamento de renomeação no git log, você só precisa garantir que encenar a parte 'remove' da mudança no mesmo commit da parte 'add'. O git add -A facilita isso se o seu .gitignore estiver atualizado.
22315 CB Bailey
40
Também sou um novato no git, e para dizer a verdade, prefiro usá-lo na linha de comando. Eu ficaria um pouco assustado ao lidar com o poder do Git em uma GUI que tenta ser "inteligente" e fazer alguma "mágica" nas minhas costas.
hasen
1
Obrigado pelo conselho. Acabei de mudar para o git (e github) e nunca mais vou olhar para trás. Meu cliente usa o forforce (ugh!). Então, meu plano é fazer um check-out de forçosamente, fazer o meu trabalho com git, em seguida, verifique-o novamente.
Mark Beckwith
7
@CallMeLaNN: Você está fazendo uma grande suposição por lá, sobre os novatos no Git terem dificuldade ao usar a linha de comando. Veja o comentário de hasan j de abril de 2009.
Jon Skeet
Eu costumo adicionar .user, * .suo, bin, obj,. e _ * à minha lista de ignorados ... se houver uma das opções acima que eu quero adicionar, ainda posso adicioná-la manualmente.
precisa
93

O Git Source Control Provider é um novo plug-in que integra o Git ao Visual Studio.

yysun
fonte
Existe alguma chance de fazê-lo funcionar em 2005?
Art
3
Bem. TBH, a interface gráfica disso é exatamente o que eu estava procurando quando procurei uma GUI para git no VS 2010. Obrigado por postar isso. As outras respostas não são o que eu preciso. Eles são ruins em comparação com o VisualSVN.
JDeckham
1
Eu recomendo ver a seção de revisão em marketplace.visualstudio.com/… antes de decidir instalá-la.
QMaster 14/10/18
53

Analisei isso um pouco no trabalho (tanto no Subversion quanto no Git). O Visual Studio realmente possui uma API de integração de controle de origem para permitir a integração de soluções de controle de origem de terceiros no Visual Studio. No entanto, a maioria das pessoas não se incomoda com isso por alguns motivos.

A primeira é que a API pressupõe que você esteja usando um fluxo de trabalho de check-out bloqueado. Existem muitos ganchos que são caros de implementar ou simplesmente não fazem sentido quando você está usando o fluxo de trabalho de edição e mesclagem mais moderno.

A segunda (relacionada) é que, quando você está usando o fluxo de trabalho de edição e mesclagem que o Subversion e o Git incentivam, você realmente não precisa da integração do Visual Studio. A principal coisa sobre a integração do SourceSafe com o Visual Studio é que você (e o editor) pode dizer rapidamente quais arquivos você possui, quais devem ser retirados antes de poder editar e quais não podem, mesmo que desejem. Em seguida, ele pode ajudá-lo a fazer qualquer vodu de controle de revisão que você precisa fazer quando deseja editar um arquivo. Nada disso faz parte de um fluxo de trabalho típico do Git.

Quando você está usando o Git (ou SVN normalmente), todas as suas interações de controle de revisão ocorrem antes da sessão de desenvolvimento ou depois dela (depois que você tiver tudo funcionando e testado). Nesse ponto, não é realmente muito doloroso usar uma ferramenta diferente. Você não precisa constantemente mudar de um lado para o outro.

TED
fonte
22
Vocês nunca mudam ou renomeiam arquivos / diretórios? Comecei a usar o VisualSVN há alguns meses e nunca mais poderia voltar.
JohnOpincar
10
@TED ​​Para mim, isso significa que, após um longo desenvolvimento, você deve se lembrar dos motivos de cada alteração de arquivo até fazer o check-in. Se estou trabalhando em alguma coisa e vejo algo que precisa ser corrigido em uma área não relacionada, gosto de verificar, corrigir e fazer check-in sabendo que posso remover essa alteração da minha memória. Eu prefiro fazer isso de dentro VS
Peter M
4
O plug-in Git Extensions Visual Studio não tenta se encaixar na API de controle de origem de check-out bloqueado da velha escola que a Microsoft forneceu. É muito adequado para um fluxo de trabalho de mesclagem de edição e basicamente adiciona o histórico de commit / push / pull e arquivo diretamente no IDE. Ter o histórico de arquivos no menu de contexto é extremamente útil!
26510 Jacob
3
Eu discordo principalmente porque ter que sair do estúdio visual para fazer o check-in incentiva tempos mais longos entre os check-ins. Muitas pessoas já fazem check-out no início do dia e não fazem check-in até o final (ou dias piores depois). A integração com o visual studio permite que você mantenha constantemente o controle da fonte no seu fluxo de trabalho.
Chris McGrath
8
A integração de controle de origem do Visual Studio a partir do VS2005 (VS2003?) Não se inclina particularmente para um modelo de check-out. Veja o AnkhSVN, por exemplo. Eu prefiro a integração do VS, porque renomeia etc. são mais suaves.
Roger Lipscombe
38

Acho que o Git, trabalhando em árvores inteiras, beneficia menos da integração do IDE do que as ferramentas de controle de origem que são baseadas em arquivos ou seguem um padrão de checkout-edição-confirmação. É claro que há casos em que pode ser bom clicar em um botão para fazer um exame de histórico, mas não sinto muita falta disso.

O real a fazer é deixar seu arquivo .gitignore cheio de coisas que não deveriam estar em um repositório compartilhado. As minas geralmente contêm (entre outras coisas) o seguinte:

*.vcproj.*.user
*.ncb
*.aps
*.suo

mas isso é fortemente influenciado por C ++ com pouco ou nenhum uso de qualquer funcionalidade de estilo de assistente de classe.

Meu padrão de uso é algo como o seguinte.

  1. Código, código, código no Visual Studio.

  2. Quando estiver feliz (ponto intermediário sensato para confirmar o código, mude para o Git, altere as etapas e revise as diferenças. Se algo estiver obviamente errado, volte para o Visual Studio e corrija; caso contrário, confirme.

Qualquer fusão, ramificação, rebase ou outro material sofisticado do SCM é fácil de fazer no Git no prompt de comando. O Visual Studio normalmente fica bastante satisfeito com as coisas que estão mudando, embora às vezes seja necessário recarregar alguns projetos se você tiver alterado os arquivos do projeto significativamente.

Acho que a utilidade do Git supera qualquer pequeno inconveniente de não ter uma integração total do IDE, mas é, até certo ponto, uma questão de gosto.

CB Bailey
fonte
11
Você não deve, definitivamente deve ter seu arquivo de projeto sob controle de versão.
CB Bailey
1
Isto é muito importante - recuperando de esquecer de incluir algo em .gitignore uma vez que você começou a cometer e ramificação é doloroso, para dizer o mínimo ...
Benjol
3
@ Benjol: Não deve ser tão doloroso. Você só precisa git rm <file>e echo <file> >>.gitignore; git add .gitignorenas dicas dos seus ramos ativos. Depois de confirmar a alteração, sempre é possível escolher a correção em outros ramos.
CB Bailey
1
@ Charles Bailey, veja minhas aventuras nesta pergunta: stackoverflow.com/questions/1887049/…
Benjol
9
Mike Brown: Ele está ignorando os arquivos * .user, que são configurações específicas do usuário.
Srdjan Jovcic
31

A Microsoft anunciou recentemente o Git for Visual studio 2012 (atualização 2). Ainda não brinquei com ele, mas este vídeo parece promissor.

Aqui está um tutorial rápido sobre como usar o Git no Visual Studio 2012.

Chandramouleswaran Ravichandra
fonte
Eu recomendo este, pois é um produto oficial da Microsoft. e pode instalar no VS 2012 express e
Cheung
28

Também não perca o TortoiseGit ... https://tortoisegit.org/

tonyo
fonte
Sim, essa é uma boa interface do usuário, mas não, ela não se integra ao Visual Studio.
Scott Rippey 28/10
3
O Provedor de Controle de Origem Git adiciona comandos do TortoiseGit ao menu de contexto no Visual Studio.
HotN
26

Há um Visual Studio Tools para Git da Microsoft. Porém, ele suporta apenas o Visual Studio 2012 (atualização 2).

Sheng Jiang 蒋 晟
fonte
para o visual studio 2012, esta é a melhor resposta. Parece que eles colocam muito esforço na implementação e, na minha experiência, funciona como esperado!
RoelF
2
Não consegui descobrir como configurar as "Ferramentas do Visual Studio para Git" da Microsoft para usar um repositório particular do Github. Você já viu alguma documentação ou tutoriais sobre isso?
Golliher
Eu recomendo ver a seção de revisão em marketplace.visualstudio.com/… antes de decidir instalá-la.
QMaster 14/10/18
18

O suporte ao Git da Microsoft no Visual Studio é bom o suficiente para o trabalho básico (confirmação / busca / mesclagem e envio). Meu conselho é apenas para evitá-lo ...

Eu prefiro GitExtensions (ou em menor proporção SourceTree ). Porque ver o DAG é para mim realmente importante entender como o Git funciona. E você está muito mais ciente do que os outros colaboradores do seu projeto fizeram!

No Visual Studio, você não pode ver rapidamente a diferença entre arquivos ou confirmação, nem (adicionar ao índice) e confirmar apenas parte das modificações. Navegue pela sua história também não é bom ... Tudo isso termina em uma experiência dolorosa!

E, por exemplo, o GitExtensions vem com plugins interessantes: busca em segundo plano, GitFlow, ... e agora, integração contínua !

Para os usuários do Visual Studio 2015 , o Git está tomando forma se você instalar a extensão GitHub. Mas uma ferramenta externa ainda é melhor ;-)

Philippe
fonte
o GitExtensions funciona para você em vs 2015? o menu não funciona para mim github.com/gitextensions/gitextensions/issues/2815
raklos
15

O TortoiseGit amadureceu e eu o recomendo especialmente se você tiver usado o TortoiseSVN.

SurfRat
fonte
10

Conforme indicado por Jon Rimmer, você pode usar GitExtensions. O GitExtensions funciona no Visual Studio 2005 e no Visual Studio 2008, mas também no Visual Studio 2010 se você copiar e configurar manualmente o arquivo .Addin.

Henk
fonte
um bom. Eu me pergunto quem está testando e aprovando a interface do usuário ... as mensagens são muito confusas ... meu único palpite é que eles se apressaram em publicá-la e ver o que / por que o usuário reclama.
ramnz
10

Atualmente, existem 2 opções para o Git Source Control no Visual Studio (2010 e 12):

  1. Provedor de Controle de Origem Git
  2. Provedor Microsoft Git

Eu tentei os dois e achei o primeiro mais maduro e com mais recursos. Por exemplo, ele funciona bem com as extensões git e git da tartaruga e até expõe seus recursos.

Nota : Qualquer que seja a extensão usada, ative-a Tools -> Options -> Source control -> Plugin Selectionpara que ela funcione.

Tarun
fonte