Cherry-pick特定提交为单个提交

时间:2015-02-26 16:25:25

标签: git bash shell

这是Git cherry pick those commits that contain a keyword (tracking id)

的后续问题

我想为代码审查创建一个孤儿分支。这个孤立分支将来自SHA_of_first_commit~1,其中包含我的trackingID的提交消息。在创建孤立分支之后,我挑选那些包含我的trackingID的消息。问题是所有樱桃挑选的提交都在孤儿分支中单独显示。我希望所有这些都被视为单个提交,以便我可以使用这个新的SHA查看代码。以下是我现在使用的脚本。

#!/bin/bash

if [ -z $1 ]; then
    echo "Rationale: Cherry pick all commits in master, that match the tracking ID and create a new branch.";
    echo "";
    echo "Usage:  $0 traackingID";
    echo "";
    exit 1;
fi

#If $1 doesn't match a AGW-<number> pattern, thrown an error

user="$(id -u -n)" > /dev/null

echo "You are - $user"

branchname=$user"_"$1"_review"

echo "Creating branch - $branchname"

basecommit="$(git log master --pretty=oneline --reverse | grep "$1" | head -1 | cut -d ' ' -f 1)""~1"

echo "Checking out from $basecommit"

git checkout --orphan $branchname $basecommit > /dev/null
git commit -m "$1"

git rev-list master --reverse --grep="$1" | while read rev
do
  echo $rev
  git cherry-pick $rev > /dev/null
done

#git push &> /dev/null

echo "Created branch, cherry picked, pushed to remote. Now switching back to master. Bye."

git checkout master

1 个答案:

答案 0 :(得分:4)

说实话,我没有看到检查孤儿分支并重新应用一系列提交进行代码审查的重点。但这不是问题。

git cherry-pick接受-n--no-commit)选项。从文档中,强调我的。

  

通常命令会自动创建一系列提交。此标志应用必要的更改来挑选每个命名提交到您的工作树和索引而不进行任何提交

cherry-pick应用了相关更改后,您可以通过制作简单的git commit来完成此过程。