我正在尝试为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:我也尝试合并分支机构并希望它会被接受......但是没有骰子。
答案 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提交所有挑选的樱桃。