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'? 
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top