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

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

Respostas (4)

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

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.

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

Git suporta este comando:

git checkout -B master origin/master

Verifique o ramo origin/master e depois reinicie lá o ramo master.

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

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

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

Se já está no master pode fazer o seguinte:

git reset --hard origin/master

Apontará o ramo local master para o origin/master remoto e descartará quaisquer modificações no poço de trabalho.