AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 420855
Accepted
Huang
Huang
Asked: 2018-01-31 19:57:22 +0800 CST2018-01-31 19:57:22 +0800 CST 2018-01-31 19:57:22 +0800 CST

Como obter os arquivos modificados (antes e depois) do servidor de versão git?

  • 772

Agora aqui está o id de commit 41f9f4e392ab50db264e0328de7d69f1f10646eb, eu quero pegar este código de id de commit que foi modificado apenas.

Eu uso git show 41f9f4e392ab50db264e0328de7d69f1f10646ebpara ver arquivos modificados, como posso baixá-los depois de modificados e antes da versão modificada via gitcomando Linux? Em uma palavra, eu só quero comparar as diferenças de antes e depois do ID de confirmação 41f9f4e392ab50db264e0328de7d69f1f10646ebpara mesclar o código facilmente.

Qualquer ideia será útil, obrigado antecipadamente.

linux git
  • 2 2 respostas
  • 94 Views

2 respostas

  • Voted
  1. Stephen Kitt
    2018-01-31T21:18:18+08:002018-01-31T21:18:18+08:00

    Para ver o estado dos arquivos antes e depois de um determinado commit, verifique seu pai:

    git checkout 41f9f4e3~1
    

    então o próprio commit:

    git checkout 41f9f4e3
    

    No entanto , quase nunca é necessário examinar os detalhes de uma mudança dessa maneira. No seu caso, para aplicar um commit a outro branch, escolha-o:

    git checkout ${target_branch}
    git cherry-pick -x 41f9f4e3
    

    (substituindo ${target_branch}conforme apropriado). A -xopção adiciona um comentário na mensagem de commit com a origem do cherry-pick.

    • 2
  2. Best Answer
    Huang
    2018-02-02T23:05:58+08:002018-02-02T23:05:58+08:00

    Obrigado a todos, encontrei o caminho correto, aqui está.

    #!/bin/bash
    from_id=$1
    to_id=$2
    #echo $from_id
    #echo $to_id
    diffpath='patch/diff.log'
    newpath='patch/new/'
    oldpath='patch/old/'
    rm -rf patch
    mkdir -p $newpath
    mkdir -p $oldpath
    git diff $from_id $to_id --raw > $diffpath
    cat $diffpath | while  read line
    do 
        #echo =====================================
        #echo $line
        OLD_IFS="$IFS"
        IFS=" "
        arr=($line)
        IFS="$OLD_IFS"   
        #echo ${arr[4]}
        filepath=${arr[4]##* }
        #echo $filepath
        newid=${arr[2]%%...}
        #echo $newid
        oldid=${arr[3]%%...}
        #echo $oldid  
    
       if [ "$newid"x != "0000000"x  ]; then   
         newfilepath=${newpath}${filepath}
         echo $newfilepath
         dirpath=${newfilepath%/*}
         echo $dirpath
         mkdir -p ${dirpath}
         git cat-file -p $newid >  ${newfilepath}
       fi
    
       if [ "$oldid"x != "0000000"x  ]; then 
         oldfilepath=${oldpath}${filepath} 
         echo $oldfilepath
         dirpath=${oldfilepath%/*}
         echo $dirpath   
         mkdir -p ${dirpath}
         git cat-file -p $oldid >  ${oldfilepath}
       fi   
    done 
    

    Você encontrará o novo diretório chamado patch no diretório de trabalho atual depois de fazer isso.

    • 1

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve