Existe uma maneira de ver o que seria enviado se eu fizesse um git push
comando?
O que estou imaginando é algo como a guia "Arquivos alterados" do recurso "solicitação de recebimento" do Github. Quando emito uma solicitação pull, posso ver e ver o que será recebido se eles aceitarem minha solicitação pull:
A linha de comando está OK, mas eu preferiria algum tipo de GUI (como a captura de tela acima).
Respostas:
Para obter uma lista de arquivos a serem enviados, execute:
exemplo:
Para o diff de código dos arquivos a serem enviados, execute:
Para ver os caminhos completos dos arquivos que serão alterados, execute:
Se você quiser ver essas diferenças em uma GUI, precisará configurar o git para isso. Consulte Como visualizo a saída 'git diff' com um programa visual diff? .
fonte
HEAD
, não o índice, da origem (git diff origin/master HEAD
). A difusão do índice fornecerá os mesmos resultados se e somente se você não tiver alterações preparadas para confirmação. Se você tiver alterações preparadas, elas serão incluídas no diff, mas claramente não serão enviadas, pois ainda não foram confirmadas.git diff --stat origin/master HEAD
é a resposta correta.git diff --cached [remote/branch]
faz o truque :) #Sempre há um funcionamento a seco:
Ele fará tudo, exceto o envio real dos dados.
Se você deseja uma visualização mais gráfica, tem várias opções.
O Tig e o script gitk que acompanham o git exibem a ramificação atual da sua cópia local e a ramificação do controle remoto ou origem.
Portanto, quaisquer confirmações feitas após a origem são confirmadas por push.
Abra o gitk a partir do shell enquanto estiver na ramificação que você deseja enviar, digitando
gitk&
; em seguida, para ver a diferença entre o que está no controle remoto e o que você está prestes a enviar para o controle remoto, selecione seu commit não pressionado local e clique com o botão direito do mouse no controle remoto e escolha "Diff this -> selected":fonte
git diff --stat HEAD origin/master
ougit diff HEAD origin/master
. Importante é a CABEÇA , caso contrário você incluir mudanças uncommited em seu diffgit push --dry-run
é que ele ainda requer permissão de gravação no controle remoto. Portanto, se você tiver um clone sem permissão para enviar a montante, mas gostaria de ver quais são as alterações não pressionadas,--dry-run
não o fará.branch
eorigin/branch
, eu seguiria a resposta de Ionuț G. Stan, já que na verdade não é necessário conectar-se ao repositório remoto. Isso pode ser bom ou ruim, dependendo do que você precisa.Para simplesmente listar os commits aguardando envio: ( este é o que você lembrará )
fonte
git cherry -v heroku/remote
caso você mantenha seu código em mais de um controle remoto.Você provavelmente quer correr
git difftool origin/master...
. isso deve mostrar o diff unificado do que está em sua ramificação atual que ainda não está na ramificação de origem / mestre e exibi-lo na ferramenta de diff gráfica de sua escolha. Para estar mais atualizado, executegit fetch
primeiro.fonte
git difftool -d origin/master
, Eu tenho meu difftool configurado para fundir, para que funcione perfeitamente, thx!git difftool -d
é muito melhor, graças ao Aquarius Power. O único problema é que ele não detecta arquivos movidos e os mostra como excluídos e adicionados.Uma maneira de comparar sua versão local antes de enviá-la no repositório remoto (tipo de envio a seco):
Use o TortoiseGit:
Clique com o botão direito do mouse no projeto da pasta raiz> TortoiseGit> Diff com a versão anterior>
para a Versão 2, escolha
refs/remotes/origin/master
fonte
Tente
git diff origin/master..master
(supondo queorigin/master
seja o seu upstream). Ao contráriogit push --dry-run
, isso ainda funciona, mesmo se você não tiver permissão de gravação para o upstream.fonte
Use
git gui
, você pode ver uma lista do que mudou no seu commit real. Você também pode usar ogitk
que fornece uma interface fácil para reflogs. Basta comparar entreremotes/...
emaster
ver o que será empurrado. Ele fornece uma interface semelhante à sua captura de tela.Ambos os programas estão incluídos no git.
fonte
gitk --all
de obter uma lista completa de todos os comentários Agora você pode comparar o estado real do seu dev-ramo com seu controle remoto para empurrar..Para ver quais arquivos foram alterados e visualizar as alterações reais do código em comparação com a
master
ramificação, você pode usar:NOTA : Se você usar algum dos IDEs Intellij, poderá clicar com o botão direito do mouse no seu projeto de nível superior, selecione Git > Comparar com filial > e escolha a origem desejada, por exemplo
origin/master
. Na árvore de arquivos que aparecerá, você pode clicar duas vezes nos arquivos para ver uma diferença visual. Diferente da opção de linha de comando acima, você pode editar suas versões locais na janela de diferenças.fonte
Você pode listar os commits por:
E compare com o seguinte comando, onde o número de ^ é igual ao número de confirmações (no exemplo, suas 2 confirmações):
fonte
Se você estiver usando o Mac OS X, eu recomendo que você adquira o Tower, é um programa maravilhoso que tornou agradável lidar com o Git. Agora eu tenho mais que lembrar dos comandos do terminal e ele oferece uma ótima interface gráfica para visualizar, rastrear e resolver diferenças nos arquivos.
E não, eu não sou afiliado a eles, apenas uso o software deles e gosto muito dele.
http://www.git-tower.com/
fonte
Apenas para adicionar meus dois centavos ... Eu queria implementar isso ao executar tarefas em um pipeline do gitlab em um runner do gitlab. A melhor maneira de fazer isso era usar este script:
Também no meu caso, eu queria filtrar arquivos por extensão, para isso, usei:
Depois disso, você pode, por exemplo, encaminhar esta lista em outro lugar, talvez um linter;)
Espero que isso ajude alguém.
fonte
fonte
Depois
git commit -m "{your commit message}"
, você receberá um hash de confirmação antes do envio. Assim, você pode ver com o que está prestes agit
executar executando o seguinte comando:por exemplo:
git diff origin/master c0e06d2
fonte