【问题标题】:Cherry-pick specific commits as single commitCherry-pick 特定的提交作为单个提交
【发布时间】:2015-02-26 16:25:24
【问题描述】:

这是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

【问题讨论】:

  • 使用git rebase 将它们全部压缩?
  • 我不明白你在脚本中做了什么,但也许你应该看看git rebase --interactivehelp.github.com/articles/about-git-rebase之类的东西
  • @phoet,我想创建一个包含所选提交更改的分支,以便我可以在新分支上进行代码审查。
  • 这对我来说没有任何意义
  • cherry 选择你的提交然后git rebase 压缩它们...

标签: git bash shell


【解决方案1】:

说实话,我看不出检查孤立分支并重新应用一系列提交以进行代码审查的意义。但这不是问题。

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

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

cherry-pick 应用有问题的更改后,您可以通过创建一个简单的git commit 来完成该过程。

【讨论】:

  • 我从孤儿分支开始,因为我不想有一个对它的引用表单。我意识到如果我不使用孤儿分支,我不会搞砸任何事情。
猜你喜欢
  • 2016-04-11
  • 2018-04-16
  • 2012-11-05
  • 2016-10-24
  • 2011-12-09
  • 2018-12-08
  • 2021-01-18
  • 2018-04-17
  • 2012-05-21
相关资源
最近更新 更多