Utilizzo di Git con Visual Studio [chiuso]


1455

Come utente di lunga data di Visual SourceSafe (e odio) stavo discutendo di passare a SVN con un collega; ha suggerito di usare Git invece. Dal momento che, a quanto pare, può essere utilizzato come peer-to-peer senza un server centrale (siamo un team di 3 sviluppatori).

Non sono stato in grado di trovare nulla sugli strumenti che integrano Git con Visual Studio - esiste una cosa del genere?

Quali sono le tecnologie disponibili per l'uso di Git con Visual Studio? E cosa devo sapere su come differiscono prima di iniziare?


4
Ho appena aggiunto il Git Source Control Provider per VS 2010, quindi funziona ancora.
Wade73,

3
Checkout Questo tutorial da squadra VS . Il prossimo aggiornamento; L'aggiornamento 2 per VS 2012 è in arrivo da un giorno all'altro. Puoi anche scaricare l'anteprima della tecnologia della comunità (CTP) per VS2012 da qui . In alternativa, se sei interessato a CMMI, Agile, Scrum 1/2 ecc., Puoi iscriverti per un account gratuito (istanze cloud sia pubbliche che private) e invitare membri (compagni di squadra, clienti) a progettare su TFS basato su Web tfs.visualstudio. com
Annie,

3
Uso Visual Studio e git da due anni ormai. Direi che la migliore soluzione a questo problema è semplicemente usare un'applicazione di controllo del codice sorgente separata come Atlassians SourceTree. È gratuito, facile da installare, ha una buona interfaccia grafica ed è facile da usare, è possibile sfogliare più repository (ovvero diversi progetti) proprio come se si stesse navigando sul Web in Chrome e, soprattutto, supportando più sistemi di controllo del codice sorgente. Provaci! Non rimarrete delusi, vi assicuro!
Fazi,

2
Git è supportato nativamente a partire da Visual Studio 2013
rustyx,

17
Adoro il modo in cui 1342 persone hanno votato a favore di questa domanda e qualche idiota arriva e la chiude comunque. StackOverfolow va bene .... Cosa importa se non soddisfa i criteri di SO se sono così tante persone che lo trovano così utile. Il punto di questo sito Web non è di essere utile?
thebunnyrules il

Risposte:


1070

Nel gennaio 2013, Microsoft ha annunciato che stanno aggiungendo il pieno supporto Git a tutti i loro prodotti ALM. Hanno pubblicato un plug-in per Visual Studio 2012 che aggiunge l'integrazione del controllo del codice sorgente Git.

In alternativa, esiste un progetto chiamato Git Extensions che include componenti aggiuntivi per Visual Studio 2005, 2008, 2010 e 2012, nonché l'integrazione di Windows Explorer. È regolarmente aggiornato e dopo averlo utilizzato in un paio di progetti, l'ho trovato molto utile.

Un'altra opzione è Git Source Control Provider .


9
ted.dennison: secondo questa pagina ( code.google.com/p/gitextensions ) è un plug-in VS 2005/2008.
Jonas,

10
Per correggermi, la fonte è ospitata su Github, gli MSI no.
Chris S,

5
Ho installato le estensioni git, funziona "da" visual studio e non è completamente integrato. Esiste una soluzione che abilita il check-in - check-out da Esplora soluzioni?
Dani,

4
Dani, qualcuno sta lavorando a un provider di controllo del codice sorgente Git per VS che sembra fornire un livello di integrazione leggermente più profondo: gitscc.codeplex.com
Jon Rimmer,

3
Ci sono opzioni per VS 2012?
Earth Engine,

202

Uso Git con Visual Studio per la mia porta dei buffer di protocollo su C #. Non utilizzo la GUI - tengo solo una riga di comando aperta e Visual Studio.

Per la maggior parte va bene - l'unico problema è quando vuoi rinominare un file. Sia Git che Visual Studio preferirebbero che fossero loro a rinominarlo. Penso che rinominarlo in Visual Studio sia la strada da percorrere, ma fai solo attenzione a ciò che fai successivamente da Git. Anche se in passato questo è stato un po 'doloroso, ho sentito che in realtà dovrebbe essere piuttosto fluido dal lato Git, perché può notare che i contenuti saranno per lo più gli stessi. (Di solito non è lo stesso: tendi a rinominare un file quando rinomini la classe, IME.)

Ma in fondo - sì, funziona benissimo. Sono un principiante Git, ma riesco a farlo per fare tutto ciò di cui ho bisogno. Assicurati di avere un file git ignore per bin e obj e * .user.


35
git dovrebbe andare bene con VS che sta rinominando. Per un buon monitoraggio della ridenominazione nel registro di git devi solo assicurarti di mettere in scena la parte 'rimuovi' della modifica nello stesso commit della parte 'aggiungi'. git add -A rende tutto più semplice se il tuo .gitignore è aggiornato.
CB Bailey,

40
Sono anche un principiante, e per dirti la verità preferisco usarlo dalla riga di comando. Avrei un po 'paura di gestire il git power di una GUI che cerca di essere "intelligente" e fare un po' di "magia" dietro la schiena.
hasen

1
Grazie per il consiglio. Sono appena passato a git (e github) e non guarderò mai indietro. Il mio cliente usa perforce (ugh!). Quindi il mio piano è di fare un checkout da perforce, fare il mio lavoro con Git, quindi ricontrollare.
Mark Beck con il

7
@CallMeLaNN: Stai facendo un grande presupposto lì, riguardo ai principianti di Git che hanno difficoltà quando usano la riga di comando. Guarda il commento di hasan j dell'aprile 2009.
Jon Skeet,

Di solito aggiungo .user, * .suo, bin, obj,. e _ * al mio elenco di ignori ... se c'è uno dei precedenti che voglio aggiungere, posso ancora aggiungerlo manualmente.
Tracker 1

93

Git Source Control Provider è un nuovo plug-in che integra Git con Visual Studio.


C'è qualche possibilità per farlo funzionare nel 2005?
Art

3
Bene. L'interfaccia grafica di TBH è esattamente quello che stavo cercando quando ho cercato una GUI per git all'interno di VS 2010. Grazie per aver pubblicato questo. Le altre risposte non sono ciò di cui ho bisogno. Sono poveri rispetto a VisualSVN.
JDPeckham,

1
Consiglio di consultare la sezione delle recensioni su marketplace.visualstudio.com/… prima di decidere di installarlo.
QMaster

53

Ci ho pensato un po 'al lavoro (sia con Subversion che Git). Visual Studio ha in realtà un'API di integrazione del controllo del codice sorgente che consente di integrare soluzioni di controllo del codice sorgente di terze parti in Visual Studio. Tuttavia, la maggior parte delle persone non si preoccupa di questo per un paio di ragioni.

Il primo è che l'API presume praticamente che tu stia utilizzando un flusso di lavoro con checkout bloccato. Ci sono molti hook in entrambi i modi che sono costosi da implementare o semplicemente non hanno senso quando si utilizza il più moderno flusso di lavoro di modifica-unione.

Il secondo (che è correlato) è che quando si utilizza il flusso di lavoro di modifica-unione che sia Subversion che Git incoraggiano, non è davvero necessaria l'integrazione di Visual Studio. La cosa principale killer dell'integrazione di SourceSafe con Visual Studio è che tu (e l'editor) puoi dire a colpo d'occhio quali file possiedi, quali devono essere verificati prima di poterli modificare e quali non puoi verificare anche se lo desideri. Quindi può aiutarti a fare qualsiasi voodoo di controllo di revisione che devi fare quando vuoi modificare un file. Niente di tutto ciò fa parte di un tipico flusso di lavoro Git.

Quando si utilizza Git (o SVN in genere), le interazioni di controllo-revisione avvengono tutte prima della sessione di sviluppo o dopo (una volta che tutto ha funzionato e testato). A quel punto non è davvero una seccatura usare uno strumento diverso. Non devi costantemente passare avanti e indietro.


22
Non avete mai spostato o rinominato file / directory? Ho iniziato a usare VisualSVN un paio di mesi fa e non potrei mai tornare indietro.
JohnOpincar,

10
@TED ​​Per me questo significa che dopo un lungo sviluppo devi ricordare i motivi di ogni modifica del file fino al check-in. Se sto lavorando su qualcosa e vedo qualcosa che deve essere riparato in un'area non correlata, mi piace fare il check-out, correggere e verificare sapendo che posso eliminare quel cambiamento dalla mia memoria. Preferirei farlo dall'interno di VS
Peter M,

4
Il plug-in Visual Studio di Git Extensions non tenta di inserirsi nell'API di controllo del codice sorgente di checkout bloccato della vecchia scuola fornita da Microsoft. È molto adatto a un flusso di lavoro di modifica-unione e in pratica aggiunge semplicemente commit / push / pull e cronologia dei file proprio all'interno dell'IDE. Avere la cronologia dei file nel menu contestuale è estremamente utile!
Jacob Stanley,

3
Non sono d'accordo principalmente perché il fatto di dover uscire da Visual Studio per effettuare il check-in incoraggia tempi più lunghi tra i check-in. Troppe persone eseguono il checkout all'inizio della giornata e non effettuano il check-in fino alla fine (o giorni peggiori dopo). L'integrazione con Visual Studio ti consente di mantenere costantemente il controllo del codice sorgente nel tuo flusso di lavoro.
Chris McGrath,

8
L'integrazione del controllo del codice sorgente di Visual Studio a partire da VS2005 (VS2003?) Non si inclina particolarmente verso un modello di checkout-checkin. Guarda AnkhSVN per esempio. Preferisco l'integrazione VS, perché quindi i nomi, ecc. Sono più fluidi.
Roger Lipscombe,

38

Trovo che Git, lavorando su interi alberi, tragga meno benefici dall'integrazione IDE rispetto agli strumenti di controllo del codice sorgente basati su file o che seguono un modello di checkout-modifica-commit. Certo ci sono casi in cui può essere bello fare clic su un pulsante per fare un esame di storia, ma non mi manca molto.

Il vero must-do è quello di rendere il tuo file .gitignore pieno delle cose che non dovrebbero essere in un repository condiviso. I miei generalmente contengono (tra le altre cose) quanto segue:

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

ma questo è fortemente distorto dal C ++ con un uso scarso o nullo di qualsiasi funzionalità di tipo procedura guidata di classe.

Il mio modello di utilizzo è simile al seguente.

  1. Codice, codice, codice in Visual Studio.

  2. Quando sei felice (punto intermedio ragionevole per eseguire il commit del codice, passa a Git, modifica le modifiche e verifica le differenze. Se qualcosa è ovviamente sbagliato, torna a Visual Studio e correggi, altrimenti esegui il commit.

Qualsiasi unione, branch, rebase o altre cose fantasiose di SCM sono facili da eseguire in Git dal prompt dei comandi. Visual Studio è normalmente abbastanza soddisfatto delle cose che cambiano sotto di esso, anche se a volte può essere necessario ricaricare alcuni progetti se hai modificato in modo significativo i file di progetto.

Trovo che l'utilità di Git superi qualsiasi piccolo inconveniente di non avere una completa integrazione IDE ma è, in una certa misura, una questione di gusti.


11
No, dovresti assolutamente avere il tuo file di progetto sotto il controllo della versione.
CB Bailey,

1
Questo è molto importante: riprendersi da dimenticare di includere qualcosa in .gitignore una volta che hai iniziato a impegnarti e le ramificazioni è doloroso, per non dire altro ...
Benjol

3
@ Benjol: non dovrebbe essere così doloroso. Hai solo bisogno git rm <file>e echo <file> >>.gitignore; git add .gitignoresulla punta dei tuoi rami attivi. Dopo aver eseguito il commit della modifica, puoi sempre scegliere la correzione su altri rami.
CB Bailey

1
@Charles Bailey, vedere le mie avventure in questa domanda: stackoverflow.com/questions/1887049/...
Benjol

9
@ Mike Brown: sta ignorando i file * .user, che sono impostazioni specifiche dell'utente.
Srdjan Jovcic,


28

Inoltre, non perdere TortoiseGit ... https://tortoisegit.org/


Sì, questa è una buona interfaccia utente, ma no, non si integra con Visual Studio.
Scott Rippey,

3
Git Source Control Provider aggiunge i comandi TortoiseGit al menu di scelta rapida in Visual Studio.
HotN,

26

C'è un Visual Studio Tools per Git di Microsoft. Tuttavia supporta solo Visual Studio 2012 (aggiornamento 2).


per Visual Studio 2012, questa è la risposta migliore. Sembra che abbiano messo molto impegno nell'implementazione e nella mia esperienza funziona come previsto!
RoelF

2
Non sono stato in grado di capire come configurare "Visual Studio Tools for Git" di Microsoft per utilizzare un repository Github privato. Hai visto documentazione o tutorial su questo?
golliher,

Consiglio di consultare la sezione delle recensioni su marketplace.visualstudio.com/… prima di decidere di installarlo.
QMaster


18

Il supporto Git fornito da Microsoft in Visual Studio è abbastanza buono per il lavoro di base (commit / fetch / merge and push). Il mio consiglio è solo di evitarlo ...

Preferisco di gran lunga GitExtensions (o in proporzione meno SourceTree ). Perché vedere il DAG è davvero importante per me capire come funziona Git. E sei molto più consapevole di ciò che hanno fatto gli altri partecipanti al tuo progetto!

In Visual Studio, non è possibile visualizzare rapidamente la differenza tra i file o il commit, né (aggiungere all'indice) e eseguire il commit solo di una parte delle modifiche. Sfoglia la tua storia non è neanche buono ... Tutto ciò che termina in un'esperienza dolorosa!

E, ad esempio, GitExtensions è in bundle con plugin interessanti: background fetch, GitFlow, ... e ora, integrazione continua !

Per gli utenti di Visual Studio 2015 , Git sta prendendo forma se si installa l'estensione GitHub. Ma uno strumento esterno è ancora meglio ;-)


GitExtensions funziona per te nel 2015? il menu non funziona per me github.com/gitextensions/gitextensions/issues/2815
raklos




10

Gestito da Jon Rimmer, puoi usare GitExtensions. GitExtensions funziona in Visual Studio 2005 e Visual Studio 2008, funziona anche in Visual Studio 2010 se si copia e configura manualmente il file .Addin.


buona. Mi chiedo chi stia testando e approvando l'interfaccia utente ... i messaggi dappertutto sono molto confusi ... la mia unica ipotesi è che si siano affrettati a pubblicarlo e vedere cosa / perché l'utente si lamenta.
ramnz,

10

Attualmente ci sono 2 opzioni per Git Source Control in Visual Studio (2010 e 12):

  1. Provider di controllo del codice sorgente Git
  2. Provider Microsoft Git

Ho provato entrambi e ho trovato il 1 ° più maturo, e ha più funzionalità. Ad esempio, gioca bene con entrambe le estensioni git di tartaruga e git e ha persino esposto le loro caratteristiche.

Nota : qualunque estensione usi, assicurati di abilitarla Tools -> Options -> Source control -> Plugin Selectionaffinché funzioni.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.