现在这是提交 id 41f9f4e392ab50db264e0328de7d69f1f10646eb
,我想获取仅修改过的提交 id 代码。
我用来git show 41f9f4e392ab50db264e0328de7d69f1f10646eb
查看修改后的文件,如何通过Linuxgit
命令下载修改后和修改前的版本?总之,我只是想比较commit 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 的新目录。