Dette indlæg er alene udtryk for skribentens egen holdning.

Git for Visual Studio-udviklere

Af Jesper Lund Stocholm17. februar 2017 kl. 15:1810
Artiklen er ældre end 30 dage

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.

Artiklen fortsætter efter annoncen

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

  1. >git add 'fil navn'

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

  1. >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.gitignore 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!

10 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
10
20. februar 2017 kl. 09:03

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 .'

9
20. februar 2017 kl. 08:11

@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

8
19. februar 2017 kl. 21:33

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/gitflowhttp://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-shell-on-windows-10/) og Git sammen (hvis det overhoved gør)

4
19. februar 2017 kl. 03:26

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.

3
18. februar 2017 kl. 13:33

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.

2
17. februar 2017 kl. 21:59

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.

1
17. februar 2017 kl. 16:20

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