Usando Git com Visual Studio

Como um usuário Visual SourceSafe de longa data (e odiador) eu estava discutindo com um colega a mudança para SVN; ele sugeriu usar Git em seu lugar. Já que, aparentemente, ele pode ser usado como peer-to-peer sem um servidor central (nós somos uma equipe de 3 desenvolvedores).

Não consegui encontrar nada sobre ferramentas que integrem Git com Visual Studio, no entanto - será que tal coisa existe?

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

Solução

Em janeiro de 2013, a Microsoft anunciou que eles estão adicionando suporte Git completo em todos os seus produtos ALM. Eles publicaram um plugin para o Visual Studio 2012 que adiciona a integração de controle de fonte Git.

Alternativamente, há um projeto chamado Extensões Git que inclui add-ins para Visual Studio 2005, 2008, 2010 e 2012, assim como a integração com o Windows Explorer. Ele é atualizado regularmente e, depois de usá-lo em alguns projetos, achei muito útil.

Outra opção é Git Source Control Provider.

Comentários (21)

Eu uso Git com Visual Studio para meu porto de Buffers de Protocolo para C#. Eu não uso a GUI - Eu apenas mantenho uma linha de comando aberta assim como o Visual Studio.

Na maioria das vezes está bem - o único problema é quando você quer renomear um arquivo. Tanto o Git como o Visual Studio preferiam que eles fossem os únicos a renomeá-lo. Eu acho que renomeá-lo no Visual Studio é o caminho a seguir - apenas tenha cuidado com o que você faz no lado de Git depois. Embora isso tenha sido um pouco doloroso no passado, ouvi dizer que, na verdade, deveria ser bastante perfeito do lado de Git, porque ele pode notar que o conteúdo será praticamente o mesmo. (Não inteiramente o mesmo, normalmente - você tende a renomear um arquivo quando está renomeando a classe, IME).

Mas basicamente - sim, funciona bem. Sou um novato da Git, mas posso conseguir que faça tudo o que eu preciso. Certifique-se de ter um arquivo git ignore para bin e obj, e *.user.

Comentários (13)

Eu acho que Git, trabalhando em árvores inteiras como ele faz, se beneficia menos da integração do IDE do que as ferramentas de controle de fonte que são baseadas em arquivos ou seguem um padrão de checkout-edit-commit. Claro que há casos em que pode ser bom clicar em um botão para fazer um exame de histórico, mas eu não sinto muita falta disso.

A verdadeira obrigação é ter seu arquivo .gitignore cheio das coisas que não deveriam estar em um repositório compartilhado. O meu geralmente contém (entre outras coisas) o seguinte:

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

mas isto é fortemente C++ com pouca ou nenhuma utilização de qualquer funcionalidade de estilo assistente de classe.

O meu padrão de uso é algo como o seguinte.

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

  2. Quando feliz (ponto intermediário sensato para cometer código, mudar para Git, mudanças de fase e rever diffs. Se algo estiver obviamente errado, mude de volta para Visual Studio e conserte, caso contrário, submeta.

Qualquer fusão, ramificação, rebase ou outras coisas chiques de SCM é fácil de fazer em Git a partir do prompt de comando. O Visual Studio normalmente está bastante satisfeito com as coisas mudando sob ele, embora às vezes ele possa precisar recarregar alguns projetos se você tiver alterado os arquivos do projeto significativamente.

Eu acho que a utilidade de Git supera qualquer inconveniente menor de não ter uma integração IDE completa, mas é, até certo ponto, uma questão de gosto.

Comentários (10)