按文件拆分每个提交?

时间:2016-01-01 13:30:13

标签: git

我为我的项目积累了很多git提交。作为清理repo的第一步,我想将每个提交分成两个提交:一个只触及特定文件/某个/目录/文件,另一个触及其他所有内容。

由于git历史很长,我想避免手动执行此操作。

我考虑过的一些方法(但实际上没有尝试过)是:

  • 使用git rebase --exec和执行拆分的脚本。
  • 使用filter-branch。 (对这个工具不太熟悉)

然而,因为在我看来这是一个相当普遍的问题,我想在尝试重新发明轮子之前我会先检查一下。有没有自动化的方法呢?

1 个答案:

答案 0 :(得分: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