如何为一系列樱桃选择添加提交ID?

时间:2017-08-09 03:54:39

标签: git gerrit

我正在尝试为LineageOS gerrit做出贡献。

所以基本上我从上游内核分支中挑选了一系列提交......

直到现在,所选择的提交都没有改变ID。 我知道我可以使用提交挂钩手动添加一个并且:

git commit --amend

然而,有834左右的提交...... 我也知道我可以通过以下方式运行交互式rebase来轻微缓解我的痛苦:

git rebase -i $FIRST_CP
# Change every commit from pick to edit
git commit --amend
git rebase --continue

然而,这几乎与樱桃再次挑选每一次提交一样糟糕。

注意:拥有Gerrit服务器的管理员权限,因此我无法暂时删除更改ID的要求。

我在我的智慧结束时,这确实阻碍了我的贡献...... 希望有人有更好的主意。

Addenum:我也尝试合并分支机构并希望它会被接受......但是没有骰子。

2 个答案:

答案 0 :(得分:1)

尝试git filter-branch --msg-filter

我们说我们可以在~/commit-msg生成更改ID,我们现在正在master

#create an orphan branch "tmp" from "master".
git checkout --orphan tmp master
git commit -m 'new root'

#cherry-pick all the commits from an upstream kernel branch.
git cherry-pick <all-the-commits>

#rewrite the commit message of every commit on "tmp"
git filter-branch --msg-filter 'git log -1 --pretty=%B $GIT_COMMIT > msg.txt;~/commit-msg msg.txt;cat msg.txt'

#all the commits now have Change-Id
#cherry-pick all of them except the root to "master"
root=$(git log --pretty=%H --max-parents=0)
git checkout master
git cherry-pick $root..tmp

msg.txt在当前存储库下的.git-rewrite/中创建,命令完成后会自动删除.git-rewrite/。所以,让我们忽略它。

msg-filter命令模拟生成Change-Id的过程。我认为它可能更优雅,但它在我的测试中有效。

答案 1 :(得分:0)

-n, --no-commit将允许您在没有任何提交的情况下挑选一个或多个现有提交。执行此操作后,您可以使用一个提交ID提交所有挑选的樱桃。