Hoe reset ik 'master' naar 'origin/master'?
Kan ik het volgende eenvoudiger doen?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Kan ik het volgende eenvoudiger doen?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Zoals KindDragon ’s antwoord vermeldt, kunt u master
direct op origin/master
nabootsen met:
git checkout -B master origin/master
De git checkout
man pagina vermeldt:
Als -B
is gegeven, wordt <new_branch>
gemaakt als het niet bestaat; ** anders wordt het gereset**. Dit is het transactie-equivalent van
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
sinds Git 2. 23+ (augustus 2019), aangezien git checkout
te verwarrend is , is de nieuwe (nog experimentele) opdracht * git switch
**:
git switch -C master origin/master
Dat wil zeggen:
-C <new-branch> --force-create <new-branch>
Vergelijkbaar met
--create
, behalve dat als<new-branch>
al bestaat, het wordt gereset naar<start-point>
.
Dit is een handige snelkoppeling voor:$ git branch -f <new-branch> $ git switch <new-branch>
Oorspronkelijk voorgesteld:
Zoiets als:
$ git checkout master
# remember where the master was referencing to
$ git branch previous_master
# Reset master back to origin/master
$ git reset --hard origin/master
waarbij stap 2 optioneel is.
Git ondersteunt dit commando:
git checkout -B master origin/master
Check de origin/master
-tak en reset master
-tak daar.
Ik denk dat zelfs VonC’s antwoord complex is in vergelijking met deze optie:
git update-ref refs/heads/master origin/master
git reset --hard master
git logt automatisch elke waarde van een ref (via de reflog). Dus nadat je dat commando hebt uitgevoerd, dan verwijst master@{1}
naar de vorige waarde van master.
VonC’s antwoord is correct, maar het verspilt tijd met het afrekenen van de oude waarde van master in het bestandssysteem.
Als je je zorgen maakt over verweesde objecten in de repo, dan kun je git gc