从特定分支上的git历史记录中删除目录

wljmcqd8  于 2022-11-27  发布在  Git
关注(0)|答案(1)|浏览(147)

问题:我的GitHub存储库中有一个文件夹,在一个名为“my-branch”的分支中,需要删除它。这不是最后一次提交。
问题详情:
1.创建了master的一个分支,我们称之为“my-branch '。
1.在“my-branch”中做了一些工作,包括包含缓存目录的升级(.angular/cache/...)。
1.运行了这些命令- git add。git commit -m“某个消息”; git推送原点头
1.由于文件对git来说太大,推送失败。
1.意识到文件夹不应该在第一时间被推送,我更新了.gitignore文件夹并进行了后续的推送(gitadd.gitignore; git commit -m“添加了/.angular/缓存到.gitignore”; git推入原始头)
1.问题是“my-branch”的历史记录仍然包含目录“/.angular/cache”,我被bot安全扫描程序击中,说该文件夹仍然在一些提交(84 bd 63...)中。
1.我试图运行“bfg-repo-cleaner”工具从历史记录中完全删除该文件夹,但由于开发和主分支受到保护,因此无法推送。
1.现在我看到文件夹仍然被机器人扫描程序选中,但在它上面,它说文件不属于任何分支。
预期结果:
1.从“my-branch”的历史记录中删除该文件夹,不要触及任何其他分支或主文件夹。
1.'Master'和'develop'分支受到保护,我没有直接写入它们的权限,这就是'bfg-repo-cleaner'无法推送的原因。
请帮帮忙

h43kikqp

h43kikqp1#

如果分支是直的(至少,自从添加该目录以来),那么纠正起来就相当简单

git rebase -i the-commit-where-the-directory-was-added~ # do _not_ skip the pig tail, it has to biñe there
# the commit should be the first in tbe list
# change pick for edit in that commit only
# save exit
# rebase will stop right after applying that commit
git rm --cached the-directory
# consider adding the directory to .gitignore and add it also so it's not added by mistake later
git commit --amend --no-edit
git rebase --continue

当它完成运行时,应该有一个没有目录的分支

相关问题