이제 이것이 커밋 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라는 새 디렉터리를 찾을 수 있습니다.