Exportando / Arquivamento arquivos alterados apenas no Git
Pergunta
Existe uma maneira simples de exportação / arquivar apenas os arquivos alterados de um determinado cometer ou série de commits em git? Eu não consigo encontrar instruções claras para fazer isso (e eu sou novo para Linux / Git).
Eu estou usando msysgit, e para a maior parte eu estou bem com a implantação de repositórios inteiros mas em muitos casos, é muito mais eficiente para implantar pequenas correções de alguns arquivos de uma vez.
empurrar / puxar / instalar git nos servidores remotos não é realmente uma opção como o meu nível de acesso varia entre projetos e clientes.
Existe uma maneira simples e direta para (estimativa aproximada):
pipe 'diff --names-only' to 'git-archive'?
Solução
Eu não penso que haja qualquer necessidade de envolver git-archive. Usando --name-only
, você poderia tar-se os arquivos:
tar czf new-files.tar.gz `git diff --name-only [diff options]`
Uma vez que você é novo no Linux, este pode precisar de alguma explicação:
Os acentos graves na linha de comando causa o shell para primeiro executar o comando dentro dos acentos graves, em seguida, substituir a saída do comando na linha de comando tar
. Assim, o git diff
é executado primeiro, o que gera uma lista de nomes de arquivos, um em cada linha. As novas linhas são recolhidos aos espaços e toda a lista de arquivos é colocada na linha de comando tar
. Então tar
é executado para criar o arquivo dado. Note-se que este pode gerar linhas de comando muito longas, por isso, se você tem um número muito grande de arquivos alterados você pode precisar de uma técnica diferente.