Gostaria de saber se meu repositório local está atualizado (e se não, de preferência, gostaria de ver as alterações).
Como posso verificar isso sem fazer git fetch
ou git pull
?
Gostaria de saber se meu repositório local está atualizado (e se não, de preferência, gostaria de ver as alterações).
Como posso verificar isso sem fazer git fetch
ou git pull
?
Respostas:
Experimente git fetch --dry-run
O manual ( git help fetch
) diz:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
nada aparece?
--all
?
git pull
é aproximadamente equivalente a a git fetch && git merge
. Se, em qualquer ponto, você executou a busca sem o --dry-run
, então você já obteve as coisas localmente.
git remote show origin
Resultado:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
Primeiro uso git remote update
, para atualizar seus refs remotos. Em seguida, você pode fazer uma de várias coisas, como:
git status -uno
dirá se o ramo que você está rastreando está à frente, atrás ou se divergiu. Se não disser nada, o local e o remoto são iguais. Resultado da amostra:Na filial DEV
Seu branch está atrás de 'origin / DEV' por 7 commits, e pode ser acelerado.
(use "git pull" para atualizar seu branch local)
git show-branch *master
irá mostrar os commits em todos os branches cujos nomes terminam em 'master' (por exemplo, master e origin / master).Se você usar -v
com git remote update ( git remote -v update
), poderá ver quais branches foram atualizados, então você realmente não precisa de mais comandos.
git remote update ; git status -uno
Resolvi-o. git fetch --dry-run
não deu saída, mesmo nos casos em que o local estava atrás do remoto.
você pode usar git status -uno
para verificar se sua filial local está em dia com a de origem.
git remote update ; git status -uno
certo! Não git fetch --dry-run
deu saída quando eu esperava (e git pull
puxaria as coisas).
Não realmente - mas não vejo como git fetch
faria mal, pois não mudará nenhuma das suas filiais locais.
Outra alternativa é ver o status do branch remoto usando
git show-branch remote/branch
para usá-lo como uma comparação que você pode ver git show-branch *branch
para ver o branch em todos os remotos, bem como no seu repositório! verifique esta resposta para mais https://stackoverflow.com/a/3278427/2711378
Você precisará emitir dois comandos:
Você deve executar git fetch
antes de comparar seu repositório local com os arquivos em seu servidor remoto.
Este comando apenas atualiza seus ramos de rastreamento remoto e não afetará sua árvore de trabalho até que você chame git merge
ou git pull
.
Para ver a diferença entre seu branch local e seu branch de rastreamento remoto, uma vez que você tenha obtido, você pode usar git diff ou git cherry como explicado aqui.
Isso é impossível sem usar git fetch
ou git pull
. Como você pode saber se o repositório está ou não "atualizado" sem ir ao repositório remoto para ver o que "atualizado" significa?
git pull
, o que o OP proíbe explicitamente em sua pergunta.
git status -uno
isso funciona e também se pode usar git show-branch *master
para ver o status de todos os ramos principais! Você ainda está dizendo que é impossível? Você pode ver o status de qualquer branch, desde que tenha acesso ao controle remoto!
git status
apenas informa o status de seus árbitros locais, não informa se seus árbitros locais estão atualizados com os árbitros remotos. Novamente: é simplesmente logicamente impossível saber qual é o estado do repo remoto sem obter o estado do repo remoto. Período. Estas são apenas as leis básicas do espaço-tempo.
tentei formatar minha resposta, mas não consegui. Por favor, equipe stackoverflow, por que postar uma resposta é tão difícil.
no entanto,
resposta:
git fetch origin
git status (você verá resultados como "Seu branch está atrás de 'origin / master' por 9 commits")
para atualizar para alterações remotas: git pull