如何从git版本服务器获取修改前和修改后的文件?

如何从git版本服务器获取修改前和修改后的文件?

现在这是提交 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 的新目录。

相关内容