Jeg har brugt GitHub i nogen tid nu, og jeg plejede normalt at skubbe mine funktionsgrene og derefter starte en Pull Request, som jeg selv flettede. Jeg fandt, at det hjalp mig med at holde styr på, hvor jeg flettede grene.

Men for nylig har jeg læst mere og mere om, hvordan Git fungerer, og jeg indså, at jeg kan bruge fusionsforpligtelserne til at henvise til, da jeg fusionerede grene.

Så hvad skal jeg gøre, når jeg fletter en funktionsgren til master:
Udfør en merge-commit på master og skub den derefter opstrøms ELLER Skub den lokale filial og start en pullanmodning?

Jeg har læst Introduktion til Pull-anmodninger om et 2-personers team – flet mine egne anmodninger? og Hvad er arbejdsprocessen med 2 personer i et projekt og Skal jeg åbne pull-anmodninger fra en filial på den officielle repo eller min fork? men ingen af dem ser ud til at svare på det, jeg leder efter.

Kommentarer

  • Hvad mangler du præcist af disse svar?
  • Den første taler om det fra den forstand, at pull-anmodninger er beregnet til peer review. Den anden tilbyder en arbejdsgang. Den tredje er ikke ' ikke engang relateret.
  • Jeg ser på dette fra en bedste praksis eller Sådan vedligeholdes en god git-historie synspunkt.
  • Når jeg fusionerer en PR, gør jeg det ved at flette filialen lokalt. Dette giver mig mulighed for at sikre, at fletningen gælder rent, og at køre test igen, før jeg offentliggør resultatet. GitHub ' s Pull-anmodninger er kun en formalisering af denne arbejdsgang, Git selv har ikke et koncept for PRer.
  • Når en PR bliver flettet, producerer den en fusion forpligte sig til master, så jeg tror ikke ' at dette gør nogen forskel for git-historien. Således tror jeg ikke ' der er nogen grund til at bruge den ene eller den anden bortset fra din personlige præference mellem kommandolinjen og Github UI.

Svar

git-merge mekanisme:
Brug git merge feature, mens den er på master, fletter grenen feature til master og producerer en merge-commit (hvis grenen ikke kan spoles frem) i git-historikken. For at tvinge en merge-commit til at blive lavet skal du bruge --no-ff med merge.

Merge Pull Request-mekanisme:
Når vi starter en Pull Request på GitHub, opretter det en GitHub Issue hvor folk kan tale og diskutere forpligtelserne i PR, før de flettes sammen. Når en PR er flettet på GitHub, gør den nøjagtigt den samme ting som git merge feature.

Hvad skal jeg gøre ?
Så hvad historien angår, er der ingen forskel mellem de to.
Og hvad bidraget angår, har dine bidragydere ikke at gøre noget andet for de to situationer. De er de samme (minus den dejlige lille chat).

Bedste fremgangsmåder:
Og jeg kunne ikke finde en bedste praksis, men logik siger, at PRer ikke er meget nyttige, hvis der kun er en enkelt bidragyder til et lager.

@lxrec og @amon hjalp mig med at nå denne konklusion.

Kommentarer

  • Tip: git merge registrerer muligvis ikke en fusionsforpligtelse, hvis den kan gøre “hurtig fremad”. For at tvinge en fusionsforpligtelse kan du tilføje --no-ff -muligheden.
  • Jeg foretrækker at gøre git-merge på lokalt i stedet for at gøre det på githuib.com, hvis jeg ville have noget sådant på github.com. Jeg foretrækker ikke at gøre direkte på mastergren, jeg vil hellere tage ikke-mastergren, som først kan indstilles til iscenesættelse, før den gøres tilgængelig til produktion.

Svar

Som Ashhar sagde, teknisk og historisk set er der ingen forskel. For projekter med en lille team, jeg foretrækker at flette direkte i stedet for det ekstra trin med at oprette en PR. Når en funktion har brug for gennemgang / feedback, eller når den “er en WIP, og mere end en person arbejder på den, har jeg en tendens til at åbne en PR og tilføje en liste over opgaver til PR s beskrivelse.

Bemærk, at git merge muligvis bruger hurtig fremad, hvis der ikke er nogen ændringer til master, så du vil muligvis bruge git merge --no-ff. Det gør jeg ikke.

Så kort sagt, brug kun PR s når du har brug for diskussion. Ellers bare fusionere direkte.

Kommentarer

  • Det ' er også værd at nævne, at diskussionen og feedback på en pull-anmodning kan kommer fra automatiserede kilder såvel som teammedlemmer. Hvis du har oprettet en CI-server, kan den give build- og testresultater, så du aldrig fletter noget, der bryder build on master.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *