Hoe wijzigingen in een nieuwe branch vast te leggen

Ik heb zojuist wijzigingen aangebracht in een vertakking. Hoe kan ik de wijzigingen vastleggen in de andere branch?

Ik probeer het volgende te gebruiken:

git checkout "the commmit to the changed branch" -b "the other branch"

Ik denk echter niet dat dit het juiste is om te doen, omdat ik in dit geval een nieuwe branch aan het maken ben in plaats van de wijzigingen vast te leggen in “de andere branch”.

Moet ik in plaats daarvan het volgende commando gebruiken?

git merge "the other branch"

Antwoord 1, autoriteit 100%

git checkout -b your-new-branch
git add <files>
git commit -m <message>

Eerst afrekenen in uw nieuwe vestiging. Voeg vervolgens alle bestanden toe die u wilt vastleggen voor staging. Leg ten slotte alle bestanden vast die u zojuist hebt toegevoegd. Misschien wil je daarna een git push origin your-new-branchdoen, zodat je wijzigingen op de afstandsbediening verschijnen.


Antwoord 2, autoriteit 28%

Als je geen wijzigingen hebt doorgevoerd

Als uw wijzigingen compatibel zijn met de andere tak

Dit is het geval uit de vraag omdat het OP zich wil committeren aan een nieuwe vertakking en ook van toepassing is als uw wijzigingen compatibel zijn met de doelvertakking zonder een overschrijving te activeren.

Zoals in het geaccepteerde antwoord van John Brodie, kun je gewoon de nieuwe branch afrekenen en het werk vastleggen:

git checkout -b branch_name
git add <files>
git commit -m "message"

Als uw wijzigingen niet compatibel zijn met de andere tak

Als je de foutmelding krijgt:

error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches

Vervolgens kun je je werk opslaan, een nieuwe branch maken, vervolgens je stash-wijzigingen pop-uppen en de conflicten oplossen:

git stash
git checkout -b branch_name
git stash pop

Het zal zijn alsof je die wijzigingen hebt aangebracht nadat je de nieuwe branch hebt gemaakt. Dan kun je je zoals gewoonlijk vastleggen:

git add <files>
git commit -m "message"

Als je wijzigingen hebt doorgevoerd

Als je de commits in de originele branch wilt houden

Zie het antwoord van Carl Norum met cherry-picking, wat in dit geval de juiste tool is:

git checkout <target name>
git cherry-pick <original branch>

Als je de commits niet in de originele branch wilt houden

Bekijk het antwoord van joeytwiddle op dit potentiële duplicaat . Volg een van de bovenstaande stappen zoals van toepassing en draai vervolgens de oorspronkelijke vertakking terug:

git branch -f <original branch> <earlier commit id>

Als je je wijzigingen naar een gedeelde afstandsbediening zoals GitHub hebt gepusht, moet je dit niet terugdraaien tenzij je weet wat je doet.


Antwoord 3, autoriteit 8%

Als ik het goed begrijp, heb je een toezegging gedaan aan changed_branchen wil je die toezegging kopiëren naar other_branch? Eenvoudig:

git checkout other_branch
git cherry-pick changed_branch

Other episodes