修改git历史记录中从src/到src/main/java的路径
我基本上需要将整个git历史中的路径从修改git历史记录中从src/到src/main/java的路径,git,git-filter-branch,Git,Git Filter Branch,我基本上需要将整个git历史中的路径从src/..修改为src/main/java/..将目录结构修改为Maven规则 我正试图找到一个可以实现这一点的git过滤器分支的工作示例--tree filter 有什么想法吗?你真的确定要重写历史记录,而不是在一次提交中重命名目录吗?重写完整的历史是在寻找麻烦……是的,我是。我们正在从Mercurial迁移到Git。所以没有人已经在使用迁移的git存储库,我现在只有机会做这样的更改。你真的确定要重写历史记录,而不是在一次提交中重命名目录吗?重写完整的历
src/..
修改为src/main/java/..
将目录结构修改为Maven规则
我正试图找到一个可以实现这一点的git过滤器分支的工作示例--tree filter
有什么想法吗?你真的确定要重写历史记录,而不是在一次提交中重命名目录吗?重写完整的历史是在寻找麻烦……是的,我是。我们正在从Mercurial迁移到Git。所以没有人已经在使用迁移的git存储库,我现在只有机会做这样的更改。你真的确定要重写历史记录,而不是在一次提交中重命名目录吗?重写完整的历史是在寻找麻烦……是的,我是。我们正在从Mercurial迁移到Git。因此,没有人已经在使用迁移的git repository,我现在只有机会做这样的更改。
--索引过滤器
在这里更适合:不需要签出每个修订,只需git mv
索引中的目录即可。这两种方法都有效,但是索引过滤器更快。我想了想,但这真的有效吗git mv
没有像git rm
那样的--cached
选项。您可以添加一个带有--index filter的示例吗?不,没有。它不像我说的那样起作用git mv
需要一个工作树才能工作。即使它在仅缓存模式下工作,您也需要一个“create directory”命令,该命令也只能在索引上工作,同样使用git mv
也不能将某些内容移动到不存在的位置。它根本不起作用,我只是试了一下@Matthieu Moy如果你认为它有效,请给出一个例子,否则请删除你的评论,因为它是误导性的,特别是因为向上投票表明它可能是正确的。事实上,除了一个git mv--cached
,没有简单的方法使用--index filter
。有人可能会用git update index
来破解一些东西,但这可能是杀伤力太大了。--index filter
在这里更适合:不需要签出每个修订,只需git mv
索引中的目录即可。这两种方法都有效,但是索引过滤器更快。我想了想,但这真的有效吗git mv
没有像git rm
那样的--cached
选项。您可以添加一个带有--index filter的示例吗?不,没有。它不像我说的那样起作用git mv
需要一个工作树才能工作。即使它在仅缓存模式下工作,您也需要一个“create directory”命令,该命令也只能在索引上工作,同样使用git mv
也不能将某些内容移动到不存在的位置。它根本不起作用,我只是试了一下@Matthieu Moy如果你认为它有效,请给出一个例子,否则请删除你的评论,因为它是误导性的,特别是因为向上投票表明它可能是正确的。事实上,除了一个git mv--cached
,没有简单的方法使用--index filter
。人们可能会用git更新索引git-updateindex
来攻击一些东西,但这可能是杀伤力太大了。
git filter-branch --tree-filter 'mv src src_old && mkdir -p src/main && mv src_old src/main/java' -- --all