我有一个git repo,我在其中为Android提交了我的apk版本。我猜这是一个坏主意,但我这样做是因为有时我需要回到某个apk版本来测试和重建不是一个选项,因为gradle依赖关系通常不再可用。
所以现在我的回购是2场演出,我需要留出一些空间。最后一次发生这种情况我做错了什么并失去了一些历史,所以我想确保我这次做得很好,因为我并不像上次那样匆忙。
基本上我每次构建它时都会提交我的apk,并将其发布给测试用户。我想从我的回购历史中删除所有非生产apks。所以基本上我想删除修订xyz和修订版abc之间的所有apks。我希望在xyz和abc之后的所有内容之前保留所有内容。我应该提到apk总是有相同的文件名,这个repo专门用于apk文件。
我该怎么做?
感谢。
答案 0 :(得分:0)
假设提交历史记录与A-B-xyz-C-D-abc-E-F<----master
类似。
git branch backup_master master
git rebase --strategy=recursive -X theirs --onto B abc master
xyz C D abc
已从历史记录中删除,现在预计会像A-B-E'-F'
一样。由于apk是二进制文件,因此在此类rebase期间始终存在冲突。这就是我们在这里需要--strategy=recursive -X theirs
的原因。在完成rebase之后,你可以做一些检查以查看E
中的apk和E'
中的apk是否相同。如果E
没问题,我们可以确定之后的提交也没问题。
git rev-parse E:<apk_path>
git rev-parse E':<apk_path>
如果两个输出相同,现在一切都好。
如果我们不使用--strategy=recursive -X theirs
,则因应冲突而应用E
时会停用rebase。如果发生这种情况,请运行以下命令以完成rebase。
git checkout E -- apk_path
git add apk_path
git rebase --continue