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
?
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 agit fetch && git merge
. Se, em qualquer ponto, você executou a busca sem o--dry-run
, então você já obteve as coisas localmente.Resultado:
fonte
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: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.fonte
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.fonte
git remote update ; git status -uno
certo! Nãogit fetch --dry-run
deu saída quando eu esperava (egit 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.fonte
Outra alternativa é ver o status do branch remoto usando
git show-branch remote/branch
para usá-lo como uma comparação que você pode vergit 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/2711378fonte
Você precisará emitir dois comandos:
fonte
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
ougit 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.
fonte
Se você usar
você receberá feedback sobre se ele está atualizado. Então, basicamente, você só precisa adicionar a opção "detalhada" à resposta dada antes.
fonte
Isso é impossível sem usar
git fetch
ougit 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?fonte
git pull
, o que o OP proíbe explicitamente em sua pergunta.git status -uno
isso funciona e também se pode usargit 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
fonte