Jesper Lund Stocholm bloghoved

Git for Visual Studio-udviklere

Jesper har forfattet en rigtig god introduktion til Git - med mange gode fifs til nybegynderen.

Jeg kommer fra en del af programmerings-økosystemet, hvor Git ikke traditionelt har haft den store udbredelse - nemlig det økosystem, der arbejder med Microsofts teknologi-stack.

Jeg har arbejdet i det små med Git I nogle få år, og giver hermed mine 2 cents omkring mine erfaringer med brug af Git i "min verden".

Første udfordring: Visual Studio

Som bruger af Visual Studio (og diverse add-ons) er man vant til, at IDE'en (Integrated Development Environment) håndterer en hel masse gymnastik for dig, når du arbejder med kildekoden. Den håndterer opsplitning af filer ved omstrukturering af kildekode (refactoring) så du ikke selv skal tilføje en ny klasse til din "Visual Studio Solution". Hvis du tilføjer en reference til en web service, så hitter Visual Studio selv ud af at tilføje de 1E6 nye filer som den åbenbart skal bruge for at kunne lave et simpelt SOAP-request imod en WS*-service etc.

Git er jo totalt afkoblet fra IDE'en (hvis man bruger Command-line interfacet) så den ved ikke noget om hvordan Visual Studio håndterer disse ting. Den kan bare se, at der er 1E6 nye filer i ens lokale repository.

Jesper nævner kommandoen

>git add 'fil navn'

Men med så mange nye filer, så bliver dette nemt træls i længden. Brug i stedet denne kommando:

>git add -A

Den kigger i hele dit lokale source tree og tilføjer alle nye filer og registrerer ændringer til eksisterende filer.

Anden udfordring: Visual Studio

De fleste af os Visual Studio-udviklere har nok prøvet at kigge på, hvad der i grunden findes af filer og foldere i sådan en Visual Studio Solution. Konklusionen er normalt: alt muligt skrammel, der intet har med kildekoden at gøre. Der findes bla. /bin-mapper og /obj-mapper med kompilerede udgaver af det program man laver. Disse skulle helst ikke med op i dit centrale git repository. Der er også brugerens egne indstillinger I de mystiske *.csproj.user-filer og *.suo-filer og migrerer du kode fra et Team Foundation Server repository, så er der også en masse *.vspscc-filer og *.vssscc-filer. Disse skulle helst heller ikke i det centrale repository.

Til alt held bruger git en ".gitignore"-fil, der styrer, hvilke filer, der skal committes. Og til alt held har de flinke folk hos github lavet sådan en fil til netop Visual Studio-brugere . Den kan hentes fra https://raw.githubusercontent.com/github/gitignore/master/VisualStudio.g... og min anbefaling er, at denne fil er den første man laver, når man starter et nyt repository til brug for git. Resultatet af denne fil er, at kun de "rigtige" filer i din Visual Studio Solution kommer med i dit repository.

Tredje udfordring: Visual Studio

Visual Studio har traditionelt set ikke haft god understøttelse af git - men programmet er efterhånden kommet efter det.

Hvis du åbner en Visual Studio Solution i et git repository, så vil du se billedet til venstre. Hvis du åbner en Visual Studio Solution fra "TFS", så ser du billedet til højre. Det er der ingen ben i :-) .

Hvis man bruger "username/password" autentificering imod git, så kan du lave stort set det meste i Visual Studio IDE. Men hvis du er som nogle af os - og bruger SSH-nøgler som identifikation, så må du gå en anden vej end brugerfladen i Visual Studio.

Jesper nævner selv "git bash" og jeg må indrømme, at jeg har haft meget blandede oplevelser med netop dette program.

Men i Windows 10 har vi nu fået mulighed for "Ubuntu user mode" - eller som Microsoft kalder det: "Windows 10 subsystem for Linux (WSL)". Hermed har du mulighed for alle de smarte ting i Linux-cmd-verdenen, som OSS-udviklerne har drillet os med i årevis - herunder indbygget support for git. Den skal blot hentes via en apt-get kommando.

Jeg vil ikke beskrive setup af WSL her - blot konstatere, at jeg aldrig har kigget på Git Bash for Windows siden … og aldrig savnet den.

Note: Skulle du have din kildekode liggende på Visual Studio Team Services (VSTS) og bruger git deroppe, så understøtter VSTS nu brug af SSH-nøgler. Visual Studio understøtter det som sagt ikke selv … men mon ikke at det kommer.

Jeg er personligt blevet helt vildt tosset med git. Den giver mig en følelse af kontrol som jeg faktisk ikke rigtigt har ved brug af Visual Studio og som Jesper nævner, så kan du faktisk klare dig med en håndfuld kommandoer i git for at være kørende.

Det er bare med at komme i gang!

Relateret indhold

Kommentarer (10)
Morten Toudahl

I stedet for at ligge og rode rundt med manuelt at få den rigtige gitignore fil, så vil jeg anbefale at man sætter flueben i "use source control" nor man opretter en solution.

Første gang får man valget mellem to typer (så vidt jeg husker). Her bad jeg den om at huske at jeg bruger Git.

Så bliver der automatisk oprettet et Git repo med de korrekte filer.

Desuden bruger jeg også et værktøj kaldet "gitextensions" til at håndtere mine repos. Det vil jeg klart anbefale.
Som alternativ, har jeg hørt om "sourcetree". Jeg har dog aldrig prøvet det

Jens Villadsen

SourceTree holder 100% hvis man ikke vil sidde i terminalen ... og det kører på både Win og Mac og er gratis. Det giver et godt overblik og en udemærket grafisk visualisering af alle branches osv.

Mark Klitgaard

Personligt bruger jeg TortoiseGIT, især når jeg oplever merge conflicts da tortoise kan åbne min version og den online ved siden af hinanden, ligesom WinMerge gør. Det gør det utroligt nemt at fixe merge conflicts.

Jakob Dahl

En fremragende hjemmeside er https://www.gitignore.io Her kan man taste både projekttype og IDE ind og så kommer den med en stub til .gitignore. Man skal så selv lige gå den igennem bagefter men den er næsten klar.

Min git har jeg installeret herfra: https://desktop.github.com Den integrerer med powershell og man får autocomplete på kommandoer og visning af hvilken branch man står på og Visual Studio genkender den som installeret. En bonus er at når man sætter den op kan den hente nøglen fra ens eget repo.

SourceTree er fremragende hvis man skal i gang med at finde steder at rulle tilbage til.

Jesper Lund Stocholm Blogger

Min git har jeg installeret herfra: https://desktop.github.com Den integrerer med powershell og man får autocomplete på kommandoer og visning af hvilken branch man står på og Visual Studio genkender den som installeret. En bonus er at når man sætter den op kan den hente nøglen fra ens eget repo.


Det lyder super spændende - det må jeg lige afprøve :-)

Kim Henriksen

Og har man brug for en god model at arbejde efter, så kig disse tre links igennem:

http://nvie.com/posts/a-successful-git-branching-model/
https://github.com/nvie/gitflow
http://danielkummer.github.io/git-flow-cheatsheet/

Når du skriver readmes og har brug for formatering, så brug markdown syntax:
https://guides.github.com/features/mastering-markdown/

Til alle mine Windows venner:
Hvordan fungere "Windows Subsystem for Linux" (https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-s...) og Git sammen (hvis det overhoved gør)

Morten Toudahl

@Jesper
Det er et selvstændigt program med en grafisk brugerflade. Dejligt visuelt, og nemt at overskue.

Installationen tilbyder også at man installerer diverse andre hjælpe programmer, f.eks kdiff som kan bruges til at administrere forskelle i filer. Man kan valgfrit integrere den i shell

http://gitextensions.github.io/

Man kan også få en extension i VS, der giver adgang til funktionerne i gitextensions. Bare kig i Tools -> Extensions and Updates

Torben Frandsen

Jeg holder af at bruge Git Shell (formerly known as PoshGit.) Den pynter din PowerShell med farvekodede oplysninger om hvilken gren du står på og hvilken tilstand den er i.

I øvrigt kan de dovne med fordel skifte 'git add -A' ud med 'git add .'

Log ind eller Opret konto for at kommentere