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

Come faccio a resettare il "master" su "origine/master"?

Posso fare quanto segue in modo più semplice?

git checkout origin/master
git branch -D master
git branch master
git checkout master

Risposte (4)

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

Come indica la KindDragon risposta , si può ricreare master direttamente a origin/master con:

git checkout -B master origin/master

La [ pagina dell'uomo di git checkout indica:

Se viene dato -B, <new_branch> viene creato se non esiste; altrimenti, viene resettato. Questo è l'equivalente transazionale di

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

Dal Git 2. 23+ (agosto 2019), poiché git checkout è troppo confuso , il nuovo comando (ancora sperimentale) è * git switch **:

git switch -C master origin/master

ovvero:

-C <new-branch>
--force-create <new-branch>

Simile a --create, tranne che se <new-branch> esiste già, sarà resettato a <start-point>.
Questa è una scorciatoia conveniente per:

$ git branch -f <new-branch>
$ git switch <new-branch>

Suggerito inizialmente:

Qualcosa come:

$ 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

con il passo 2 opzionale.

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

Git supporta questo comando:

git checkout -B master origin/master
``` &001 


Check out the `origin/master` branch and then reset `master` branch there.
30
30
30
2013-01-23 20:48:07 +0000

Penso che anche la risposta di VonC sia complessa rispetto a questa opzione:

git update-ref refs/heads/master origin/master
git reset --hard master

git registra automaticamente ogni valore di un ref (attraverso il reflog). Quindi, dopo aver eseguito quel comando, allora master@{1} si riferisce al precedente valore di master.

La risposta di VonC è corretta, ma fa perdere tempo a controllare il vecchio valore di master nel filesystem.

Se vi interessano gli oggetti orfani nel repo, allora potete eseguire git gc

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

Se siete già su master potete fare quanto segue:

git reset --hard origin/master master

Esso indirizzerà la filiale locale origin/master verso il remoto &007 e scarterà qualsiasi modifica nella directory di lavoro.