如何编辑分支的历史记录,只保留影响特定子目录(部分提交)的提交,从一系列提交中选择?
基本上,我有一个大仓库,其中一些子目录是相对独立的,但不完全独立。过去,这些是单独的存储库,但这证明是有问题的,因此我们将它们合并为1个存储库。通常这没问题,但是在RoboCup比赛进行了一周之后,我们希望将一个大分支拆分为几个较小的分支,以便更容易地进行审核和单独的拉取请求。
我想为分支robocup
上的子目录challenge_gpsr
创建一个单独的分支。robocup
从189bd987
分支,因为我当前在robocup
分支上,所以HEAD
指向该分支的最终提交。
运行
git filter-branch -f --index-filter "git rm --ignore-unmatch --cached -qr -- . && git reset -q \$GIT_COMMIT -- challenge_gpsr" --prune-empty -- "robocup" 189bd987..HEAD
只留下challenge_gpsr
,但这不是我想要的,我想要其他目录,但它们的状态应该基本上是在189bd987
时的状态,而以下提交只影响子目录challenge_gpsr
。
如果这样可以,我会对其他子目录重复此方法,并可以单独查看每个子目录。