filter-branch不会删除孤立分支

时间:2018-11-21 13:55:01

标签: git git-submodules git-filter-branch

我有一个大而旧的项目,我想将一个文件夹变成一个子模块

我用过

git filter-branch --subdirectory-filter <folder name> -- --all

将其与项目的其余部分分开,并保留所有与之相关的历史记录

它做了我想要的,但是有一些与文件夹无关的提交
经过一番研究,我发现所有无关的提交都来自两个孤儿分支

我做了更多研究,发现孤立分支的提交包含在

git rev-list --all

问题是,如果孤立分支与我指定的文件夹没有任何关系,为什么不删除它们?

如果我无法在同一命令中删除其历史记录,该怎么办才能删除所有孤立分支历史记录?

修改:
我已经尝试使用--prune-empty选项无济于事

2 个答案:

答案 0 :(得分:0)

您可以尝试添加--prune-empty选项,它将删除使子目录保持不变的提交。

答案 1 :(得分:0)

解决方案是运行以​​下命令:

writefile=open("leaderboard.csv","a")
writefile.write(name+", "points)
writefile.close()

readfile=open("leaderboard.csv","r")

或者,或者-在运行`filter-branch命令之前,运行以下命令:

import csv

name = 'Test'
score = 3

with open('scores.csv', 'a') as f:
    writer = csv.writer(f)
    writer.writerow([name, score])

with open('scores.csv') as f:
    reader = csv.reader(f)
    scores = sorted(reader, key=lambda row: (float(row[1]), row[0]))
    top5 = scores[-5:]

其中test1 3 test2 3 test3 3 是用git push origin : <orphan_branch_name> --force (或)分隔的孤立分支名称