Maak Git branch met huidige wijzigingen

Ik begon aan mijn masterbranch te werken met de gedachte dat mijn taak gemakkelijk zou zijn. Na een tijdje realiseerde ik me dat het meer werk zou vergen en ik wil al dit werk in een nieuwe branche doen.

Hoe kan ik een nieuwe branch maken en al deze wijzigingen meenemen zonder masterte vervuilen?


Antwoord 1, autoriteit 100%

Als je nog geen commit had gedaan, zouden alleen (1: branch) en (3: checkout) voldoende zijn.
Of, in één commando: git checkout -b newBranch

Met Git 2.23+(Q3 2019), de nieuwe opdracht git switchzou de branch in één regel maken (met dezelfde soort reset --hard, dus pas op voor het effect):

git switch -f -c topic/wip HEAD~3

Zoals vermeld in de git resetman-pagina:

$ git branch topic/wip     # (1)
$ git reset --hard HEAD~3  # (2)  NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip   # (3)
  1. Je hebt een aantal commits gedaan, maar je realiseert je dat ze voorbarig waren om in de “master” branch te komen. Je wilt ze verder oppoetsen in een topic branch, dus maak een “topic/wip” branch off van de huidige HEAD.
  2. Spoel de masterbranch terug om van die drie commits af te komen.
  3. Schakel over naar de tak “topic/wip” en blijf werken.

Nogmaals: nieuwe manier (sinds 2019 en Git2.23) om dat allemaal in één opdracht te doen:

git switch -f -c topic/wip HEAD~3

Opmerking: vanwege het “destructieve” effect van een git reset --hardcommando (het stelt de index en werkboom opnieuw in). Alle wijzigingen aan bijgehouden bestanden in de werkboom sinds <commit>worden weggegooid), zou ik liever gaan met:

$ git reset --soft HEAD~3  # (2)

Dit zou ervoor zorgen dat ik geen privébestand verlies (niet toegevoegd aan de index).
De optie --softraakt het indexbestand en de werkboom helemaal niet aan (maar zet de kop terug naar <commit>, net zoals alle modi doen).



Antwoord 2, autoriteit 38%

Zoals vermeld in deze vraag: Git: Create een branch van unstagged/uncommitted changes op master: stash is niet nodig.

Gebruik gewoon:

git checkout -b topic/newbranch

Ongecommitteerd werk wordt meegenomen naar het nieuwe filiaal.

Als u probeert te pushen, krijgt u het volgende bericht

fataal: de huidige vertakkingsfunctie/NEWBRANCH heeft geen stroomopwaartse vertakking. Tot
druk op de huidige tak en stel de afstandsbediening in als stroomopwaarts, gebruik

git push --set-upstream origin feature/feature/NEWBRANCH

Doe gewoon zoals voorgesteld om de vertakking op afstand te maken:

git push --set-upstream origin feature/feature/NEWBRANCH


Antwoord 3, autoriteit 11%

Volg deze stappen:

  1. Maak een nieuw filiaal:

    git branch newfeature
    
  2. Nieuwe vestiging afrekenen: (hierdoor wordt je werk niet gereset.)

    git checkout newfeature
    
  3. Verbind nu je werk aan deze nieuwe branch:

    git commit -s
    

Het gebruik van bovenstaande stappen houdt je originele branch schoon en je hoeft geen ‘git reset –hard’ uit te voeren.


Antwoord 4, autoriteit 4%

Aangezien je nog geen commits hebt gemaakt, kun je al je wijzigingen in de stash opslaan, een nieuwe branch maken en er naar overschakelen, en dan die wijzigingen terug in je werkboom zetten:

git stash  # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop  # apply stash and remove it from the stash list

Antwoord 5, autoriteit 2%

Om nieuwe wijzigingen aan een nieuwe branch toe te voegen en naar remote te pushen:

git branch branch/name
git checkout branch/name
git push origin branch/name

Vaak vergeet ik het origin-gedeelte toe te voegen om te pushen en raak ik in de war waarom ik de nieuwe branch/commit niet in bitbucket zie

Other episodes