Como obter os arquivos modificados (antes e depois) do git version server?

1

Agora aqui está o ID de commit 41f9f4e392ab50db264e0328de7d69f1f10646eb , eu quero pegar esse código de commit que foram modificados apenas.

Eu uso git show 41f9f4e392ab50db264e0328de7d69f1f10646eb para ver arquivos modificados, como eu posso fazer o download desses arquivos depois da versão modificada e antes da versão modificada via comando Linux git ? Em uma palavra, eu só quero comparar as diferenças de antes e depois de cometer id 41f9f4e392ab50db264e0328de7d69f1f10646eb para mesclar código facilmente.

Qualquer ideia será útil, obrigado antecipadamente.

    
por Huang 31.01.2018 / 04:57

2 respostas

1

Obrigado a todos, eu 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.

    
por 02.02.2018 / 08:05
3

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

git checkout 41f9f4e3~1

então o próprio commit:

git checkout 41f9f4e3

No entanto , raramente é necessário analisar os detalhes de uma alteração desta forma. 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 opção -x adiciona um comentário na mensagem de commit com a origem do cherry-pick.

    
por 31.01.2018 / 06:18

Tags