Gitバージョンのサーバーで事前に変更されたファイルと事後に変更されたファイルを取得する方法は?

Gitバージョンのサーバーで事前に変更されたファイルと事後に変更されたファイルを取得する方法は?

これでコミットIDであり、41f9f4e392ab50db264e0328de7d69f1f10646eb変更されたコミットIDコードのみを取得したいと思います。

変更されたファイルを表示するために使用します。 Linuxコマンドを使用して、変更されたバージョンと事前に修正されたバージョンをどのようにgit show 41f9f4e392ab50db264e0328de7d69f1f10646ebダウンロードできますか?とにかく、コードを簡単にマージできるように、gitコミットIDの前後の違いを比較したいと思います。41f9f4e392ab50db264e0328de7d69f1f10646eb

どんなアイデアでも役に立ちます。よろしくお願いします。

答え1

特定のコミット前後のファイルの状態を確認するには、親トピックを確認してください。

git checkout 41f9f4e3~1

その後、自分でコミットします。

git checkout 41f9f4e3

しかし、、このように変更の詳細を見る必要はほとんどありません。あなたの場合、コミットを他のブランチに適用するには、次を選択します。

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

${target_branch}適切に交換)。この-xオプションは、サスペンドソースを含むコミットメッセージに説明を追加します。

答え2

みんなに感謝します。正しい方法が見つかり、ここにあります。

#!/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 

これにより、現在の作業ディレクトリにpatchという名前の新しいディレクトリがあります。

関連情報