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 fetchou 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 fetchou 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-runnada 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 -unodirá 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 -vcom 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 -unoResolvi-o. git fetch --dry-runnão deu saída, mesmo nos casos em que o local estava atrás do remoto.
você pode usar git status -unopara verificar se sua filial local está em dia com a de origem.
git remote update ; git status -unocerto! Não git fetch --dry-rundeu saída quando eu esperava (e git pullpuxaria as coisas).
Não realmente - mas não vejo como git fetchfaria mal, pois não mudará nenhuma das suas filiais locais.
Outra alternativa é ver o status do branch remoto usando
git show-branch remote/branchpara usá-lo como uma comparação que você pode ver git show-branch *branchpara 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 fetchantes 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 mergeou 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 fetchou 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 -unoisso funciona e também se pode usar git show-branch *masterpara 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 statusapenas 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