Existe uma maneira de ver o que seria empurrado se eu fizesse um comando de "empurrão"?
O que eu'm picturing é algo como o "Files Changed" aba de Github's "pull request" recurso. Quando eu emito um pedido de pull, eu posso olhar e ver o que será puxado se eles aceitarem meu pedido de pull:
A linha de comando está OK, mas I'preferiria algum tipo de GUI (como a captura de tela acima).
Para uma lista de arquivos a serem empurrados, execute:
git diff --stat --cached [remote/branch]
exemplo:
git diff --stat --cached origin/master
Para o código diff dos arquivos a serem empurrados, execute:
git diff [remote repo/branch]
Para ver os caminhos completos dos arquivos que irão mudar, execute:
git diff --numstat [remote repo/branch]
Se você quiser ver essas diferenças em uma GUI, você precisará configurar o git para isso. Veja https://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program.
Há sempre uma corrida a seco:
git push --dry-run
Ele fará tudo excepto o envio efectivo dos dados.
Se você quiser uma visão mais gráfica, você tem um monte de opções.
Tig e o script gitk que vem com gitk tanto exibe o ramo atual da sua cópia local quanto o ramo do controle remoto ou origem.
Portanto, qualquer compromisso que você faça que esteja após a origem são os compromissos que serão empurrados.
Abra o gitk da shell enquanto estiver no ramo que você quer empurrar digitando gitk&
, então para ver a diferença entre o que está no controle remoto e o que você está prestes a empurrar para o controle remoto, selecione seu commit local sem empurrar e clique com o botão direito no controle remoto e escolha "Diff this -> selected":
Use o git gui
, aí você pode ver uma lista do que mudou no seu compromisso real. Você também pode utilizar o gitk
, que fornece uma interface fácil para reflogs. Basta comparar entre remotes/...
e master
para ver, o que será empurrado. Ele fornece uma interface similar à sua captura de tela.
Ambos os programas estão incluídos no git.