これでコミット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という名前の新しいディレクトリがあります。