Como posso redefinir 'master' para 'origin/master'?
Posso fazer o seguinte de uma forma mais simples?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Posso fazer o seguinte de uma forma mais simples?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Como KindDragon ’s resposta menciona, pode recriar master directamente em origin/master com:
git checkout -B master origin/master
A página git checkout man menciona:
Se -B é dado, <new_branch> é criado se não existir; outra forma, é reiniciado. Este é o equivalente transaccional de
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
desde Git 2. 23+ (Agosto 2019), uma vez que git checkout é demasiado confuso , o novo comando (ainda experimental) é * git switch **:
git switch -C master origin/master
, ou seja:
-C <new-branch> --force-create <new-branch>semelhante a
--create, excepto que se<new-branch>já existir, será reajustado para<start-point>.
Este é um atalho conveniente para:$ git branch -f <new-branch> $ git switch <new-branch>
Originalmente sugerido:
Algo como:
$ 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
com o passo 2 sendo opcional.
Git suporta este comando:
git checkout -B master origin/master
Verifique o ramo origin/master e depois reinicie lá o ramo master.
Penso que até a resposta da VonC tem complexidade em comparação com esta opção:
git update-ref refs/heads/master origin/master
git reset --hard master
git regista automaticamente cada valor de uma ref (através do reflog). Então depois de executar esse comando, então o master@{1} refere-se ao valor anterior do master. A resposta do
VonC está correcta, mas perde tempo a verificar o antigo valor do master no sistema de ficheiros.
Se se preocupa com objectos órfãos no repo, então pode executar o git gc