2011-04-20 10:34:06 +0000 2011-04-20 10:34:06 +0000
235
235

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

Antwoorden (4)

343
343
343
2011-04-20 11:22:10 +0000

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.

102
102
102
2014-08-24 19:30:10 +0000

Git ondersteunt dit commando:

git checkout -B master origin/master

Check de origin/master-tak en reset master-tak daar.

30
30
30
2013-01-23 20:48:07 +0000

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

22
22
22
2014-06-25 15:47:13 +0000

Als u al op master bent kunt u het volgende doen:

git reset --hard origin/master

Het zal de lokale master tak naar de remote origin/master wijzen en eventuele wijzigingen in de werkende dir weggooien.