按文件将每个提交拆分?

6
我为我的项目累积了许多 Git 提交。作为清理仓库的第一步,我想将每个提交拆分成两个提交:一个仅涉及特定文件 /some/directory/file,另一个涉及其他所有内容。
由于 Git 历史记录相当长,我想避免手动操作。
我考虑过一些方法(但实际上没有尝试过),包括:
- 使用带有执行拆分脚本的 git rebase --exec。 - 使用 filter-branch。(对此工具不太熟悉)
然而,由于这似乎是一个相当常见的问题,所以在尝试重新发明轮子之前,我想在这里进行确认。是否有自动化的方法来完成这个任务?
1个回答

4

您正在走的路上,您尝试的是正确的方法。
正如您发现的那样,您有两个主要选项:


git rebase -i,也称为:squash(手动操作)

// Manipulate any commit by editing it and commitign again
git rebase -i HEAD~X

由于git历史记录相当长,我希望避免手动操作。 git filter-branch
// Remove any given file from commits 
// Now you can commit it again into a new commit

git filter-branch --tree-filter 'rm -f <file name> HEAD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接