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
Posso fare quanto segue in modo più semplice?
git checkout origin/master
git branch -D master
git branch master
git checkout master
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.
Git supporta questo comando:
git checkout -B master origin/master
``` &001
Check out the `origin/master` branch and then reset `master` branch there.
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