Vraag Verplaats bestaand, niet-toegewezen werk naar een nieuw filiaal in Git


Ik begon wat te werken aan een nieuwe functie en na een beetje coderen, besloot ik dat deze functie op zijn eigen filiaal moest zijn.

Hoe verplaats ik de bestaande niet-gecommiteerde wijzigingen naar een nieuw filiaal en reset ik mijn huidige?

Ik wil mijn huidige branche opnieuw instellen, terwijl ik het bestaande werk aan de nieuwe functie behoud.


2506
2017-09-08 15:57


oorsprong


antwoorden:


Gebruik het volgende:

git checkout -b <new-branch>

Hiermee verlaat u uw huidige filiaal zoals het is, maakt u een nieuw filiaal en keert u uit en bewaart u al uw wijzigingen. Je kunt dan een commit maken met:

git add <files>

en verbind je met je nieuwe filiaal met:

git commit -m "<Brief description of this commit>"

De wijzigingen in de werkmap en wijzigingen in de index behoren nog niet tot een filiaal. Dit verandert waar die wijzigingen zouden eindigen.

Jij niet reset uw originele tak, het blijft zoals het is. De laatste commit <old-branch> zal nog steeds hetzelfde zijn. Daarom jij checkout -b en dan vastleggen.


2961
2017-09-08 15:59



Alternatief:

  1. Bewaar de huidige wijzigingen in een tijdelijke opslag:

    $ git stash

  2. Maak een nieuwe vestiging op basis van deze voorraad en ga over naar de nieuwe vestiging:

    $ git stash branch <new-branch> stash@{0}

Tip: gebruik de tab-toets om het typen van de stash-naam te verminderen.


253
2018-06-19 00:18



Als je commits hebt gemaakt op je hoofdtak terwijl je codeerde, maar je wilt die commits nu naar een andere tak verplaatsen:

  1. Kopieer je huidige geschiedenis naar een nieuw filiaal en breng ook niet-gecommiteerde wijzigingen mee:

    git checkout -b <new-feature-branch>
    
  2. Forceer nu de originele "rommelige" tak om terug te rollen: (zonder er naar over te schakelen)

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

    Bijvoorbeeld:

    git branch -f master origin/master
    

    of als je 4 commits had gedaan:

    git branch -f master HEAD~4
    

Waarschuwing: Het komt voor dat git branch -f master origin/master zullen reset de volginformatie voor die tak. Dus als je je hebt geconfigureerd master tak om naar ergens anders dan te duwen origin/master dan zal die configuratie verloren gaan.

Een alternatief is om te gebruiken deze resettechniek. Maar die instructies zullen alle niet-gecommitteerde wijzigingen die u hebt weggooien. Als je ze wilt behouden, berg ze dan op en stal ze aan het einde.


35
2018-02-12 07:44



Als je het commit, kun je ook de single commit ID kiezen. Ik doe dit vaak als ik begin met werken in de master en dan een lokale branch wil maken voordat ik push naar mijn oorsprong /.

git cherry-pick <commitID>

Er is veel dat je kunt doen met cherry-pick, zoals beschreven hier, maar dit kan een use-case voor u zijn.


15
2017-11-30 20:58