Questão
Quais são os comandos do Git para executar o seguinte fluxo de trabalho?
Cenário
Eu clonei de um repositório e fiz algumas confirmações minhas no meu repositório local. Enquanto isso, meus colegas fizeram confirmações no repositório remoto. Agora eu quero:
Verifique se há novos commit de outras pessoas no repositório remoto, ou seja
origin
?Digamos que havia 3 novos commits no repositório remoto desde a minha última puxada, eu gostaria de diff commits do repositório remoto, ou seja,
HEAD~3
comHEAD~2
,HEAD~2
comHEAD~1
eHEAD~1
comHEAD
.Depois de saber o que mudou remotamente, quero obter as confirmações mais recentes das outras.
Minhas descobertas até agora
Para a etapa 2: conheço a notação de sinal de intercalação HEAD^
, HEAD^^
etc. , e a notação de til HEAD~2
, HEAD~3
etc.
Para a etapa 3: acho que é apenas a git pull
.
Respostas:
Você pode
git fetch origin
atualizar a ramificação remota no seu repositório para apontar para a versão mais recente. Para uma comparação com o controle remoto:Sim, você também pode usar notação de sinal de intercalação.
Se você deseja aceitar as alterações remotas:
fonte
git diff HEAD origin/master
então o diff mostra o que será aplicado se eu aceitar as alterações remotas.Encontrei isso na resposta para Verificar se é necessário puxar no Git
fonte
git pull <remote> <branch>
depois que eu forçar, porque a ponta da minha filial local estava atrás da contraparte remota.git remote update -v
eu chegueierror: unknown switch `v'
git remote -v update
nãogit remote update -v
Uma boa maneira de ter uma visão sintética do que está acontecendo "origem" é:
fonte
Eu apenas uso
O último informa quantos commits estão por trás do meu local. (caso existam)
então
para atualizar meu local :)
fonte
Minha pergunta comum é "algo novo ou alterado no repositório ", então o que mudou é útil. Encontrei aqui .
fonte
Uma solução potencial
Graças à solução de Alan Haggai Alavi, criei o seguinte fluxo de trabalho potencial:
Passo 1:
Passo 2:
Etapa 3:
fonte
git diff origing/master^ origing/master^^
git status
nem sempre mostra a diferença entre mestre e origem / mestre, mesmo após uma busca. Se você deseja que a combinaçãogit fetch origin && git status
funcione, é necessário especificar as informações de rastreamento entre filial e origem local:Para ramificação mestre:
fonte
desde que não foi sugerido até agora ... e acho bastante útil ...
eu simplesmente uso
para buscar as alterações remotas e, em seguida, visualizo confirmações remotas locais e pendentes (e suas alterações associadas) com a boa ferramenta gitk ( https://git-scm.com/docs/gitk ) envolvendo o argumento --all como
fonte