Isso é possível?
Basicamente, há um repositório remoto a partir do qual puxo usando apenas:
git pull
Agora, eu gostaria de visualizar o que essa atração mudaria (um diff) sem tocar em nada do meu lado. O motivo é que o que estou puxando pode não ser "bom" e quero que outra pessoa o conserte antes de deixar meu repositório "sujo".
git
version-control
Milan Babuškov
fonte
fonte
Respostas:
Depois de fazer a
git fetch
, faça agit log HEAD..origin/master
para mostrar as entradas de log entre o último commit comum e a ramificação principal da origem. Para mostrar as diferenças, usegit log -p HEAD..origin/master
para mostrar cada patch ougit diff HEAD...origin/master
(três pontos e não dois) para mostrar uma única diferença.Há, normalmente, não há qualquer necessidade de desfazer uma busca, porque fazer uma busca só atualiza as remotas ramos e nenhum de seus ramos. Se você não estiver preparado para fazer pull e mesclar todas as confirmações remotas, poderá usar
git cherry-pick
para aceitar apenas as confirmações remotas específicas que deseja. Mais tarde, quando você estiver pronto para obter tudo, umgit pull
será mesclado no restante dos commits.Atualização: Não sei bem por que você deseja evitar o uso do git fetch. Tudo o que o git fetch faz é atualizar sua cópia local das ramificações remotas. Essa cópia local não tem nada a ver com nenhuma de suas ramificações e não tem nada a ver com alterações locais não confirmadas. Eu ouvi falar de pessoas que executam git fetch em um trabalho cron porque é muito seguro. (Normalmente, eu não recomendaria isso.)
fonte
git diff ...@{u}
é o mesmo quegit diff HEAD...origin/master
se a origem / master é o ramo a montanteEu acho que o git fetch é o que você está procurando.
Ele puxará as alterações e os objetos sem enviá-los ao índice do repo local.
Eles podem ser mesclados posteriormente com o git merge .
Página do Homem
Editar: Explicações adicionais
Direto do curso de colisão Git-SVN link
A leitura da página de manual honestamente fornecerá o melhor entendimento das opções e como usá-las.
Estou apenas tentando fazer isso com exemplos e memória, atualmente não tenho uma caixa para testar. Você deve olhar para:
Uma busca pode ser desfeita com git reset --hard ( link ), no entanto, todas as alterações não confirmadas em sua árvore serão perdidas, bem como as alterações que você buscou.
fonte
git reset --soft
ou--mixed
? Verifique a página de manual.Você pode buscar em um repositório remoto, ver as diferenças e depois puxar ou mesclar.
Este é um exemplo de um repositório remoto chamado
origin
e de uma ramificação chamadamaster
rastreamento da ramificação remotaorigin/master
:fonte
Criei um alias git personalizado para fazer isso por mim:
com isso você pode fazer isso:
Isso fornecerá uma maneira fácil e agradável de visualizar as alterações antes de fazer um
merge
.fonte
Eu uso esses dois comandos e posso ver os arquivos para mudar.
Primeira execução do git fetch , ele fornece uma saída como esta (parte da saída):
Essa operação fornece dois IDs de confirmação, o primeiro é o antigo e o segundo será o novo.
Em seguida, compare esses dois commits usando git diff
Este comando listará os arquivos que serão atualizados:
Por exemplo, app / controller / xxxx.php e app / view / aaaa.php serão atualizados.
A comparação de duas confirmações usando o git diff imprime todos os arquivos atualizados com linhas alteradas, mas com o grep ele pesquisa e obtém apenas as linhas que contêm diff --git da saída.
fonte
Posso estar atrasado para a festa, mas isso é algo que me incomodou por muito tempo. Na minha experiência, eu gostaria de ver quais alterações estão pendentes do que atualizar minha cópia de trabalho e lidar com essas alterações.
Isso vai no
~/.gitconfig
arquivo:Ele busca a ramificação atual e faz uma diferença entre a cópia de trabalho e essa ramificação buscada. Portanto, você deve ver apenas as mudanças que viriam
git pull
.fonte
HEAD..@{u}
? É mais simples e não exige que o controle remoto seja nomeado "origem" ou que sua ramificação seja nomeada da mesma forma que no controle remoto.git pull
se não gostar do que está fazendo ... portanto, não tenho certeza de qual é o caso de uso para isso.git pull
depois. Também acho que é disso que se trata a questão do op.Se você não quiser que o git-fetch atualize seu .git local, copie seu repositório local para um diretório temporário e faça um puxão para lá. Aqui está uma mão curta:
Ex.:
fonte
Que tal clonar o repositório em outro lugar e fazer git log no checkout real e no novo clone para ver se você conseguiu a mesma coisa.
fonte