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