0

我在commits.txt文件中有一个可用的提交列表,我需要准备这些提交的补丁列表,以便稍后将它们应用到我的分支。我在下面写了 bash 脚本来这样做:-

#!/tools/bin/bash

echo "Enter input file name"
read FILENAME

echo "Enter log file name"
read LOGNAME 

while read line;
do 
    git show -- $line > /dev/null
    if [ $? -eq 0 ] 
    then
        git format-patch -- $line -1
    else
        echo "NOT FOUND, Log commit ID"
        $line >> $LOGNAME
    fi
done < $FILENAME

我将输入文件名输入为“commits.txt”,将日志文件名输入为“mylog.txt”。我没有从这些提交列表中获取 *.patch 文件。有什么线索,怎么回事?

谢谢, Prasanna NAVARATNA

4

1 回答 1

0

至少有这些问题:

  1. 对于git show, 放在-- , 之后$line因为提交 ID 是修订版。
  2. 对于git format-patch, the-1需要在 the 之前--(这实际上是不必要的)。
  3. 对于日志,请尝试echo $line >>$LOGNAME,否则它将尝试使用您的提交 ID 的名称运行程序。

根据您要实现的目标,git cherry-pick $(tr '\n' ' ' commits.txt)可能已经做到了:将所有列出的提交应用到当前分支。

于 2013-05-22T10:22:15.307 回答