这是三个部分,这是一个比Make Git rebuild history using the current .gitignore
更为循序渐进的问题我想知道是否有可能对历史中的某个早期点进行变基,并在其中设置.gitignore
规则,使其一直到顶部。我的方式是git checkout KNOWN_COMMIT_WITH_PROPER_GITIGNORE .gitignore && git rebase --continue
在--preserve-merges
https://stackoverflow.com/a/19757964/242042期间,为历史记录中的每次提交应用删除的已忽略文件。我认为这可以用git-filter-branch
创建一个可执行此操作的别名
关键是这需要基于可能随时间变化的.gitignore
,我希望将.gitignore
文件的特定版本应用于第一次提交并通过其余部分应用历史。
答案 0 :(得分:0)
我认为您可以将'git filter-branch'与'git ls-files'结合使用。像这样:
git filter-branch --index-filter 'git rm --cached `git ls-files --exclude-standard -i`'
即,过滤分支并修改索引;对于每个提交列表,忽略索引中的文件并将其从索引中删除。
PS。但请在试验前进行备份。